【问题标题】:Overload push_back() for pointers [closed]为指针重载 push_back() [关闭]
【发布时间】:2017-05-08 12:55:22
【问题描述】:

就我而言,我有一个 std::list<Ort*> ,其中 Ort 是我制作的自定义类 该列表包含指向 Ort 对象的指针。

我喜欢使用+= 重载list.push_back() 函数,这样我就可以 通过写入直接推送对象:

List<Ort*> Orte;
Ort* o = new Ort(..);

Orte+=o;

我尝试的是:

void Navi::operator+=(const Ort& b)
{
    *this->Orte.push_back(b);
}

Navi 是一个包含“Orte”列表的类。

但它告诉我它找不到正确的运算符重载 - 也就是我的参数不正确。

谁能指出我做错了什么?

【问题讨论】:

  • OrteList&lt;Ort*&gt; 时,你为什么要重载Navi
  • 已编辑 - Navi 是一个具有属性 List Orte; 的类
  • const Ort&amp;Ort* 是完全不同的类型。
  • 如果您需要实际帮助,您需要显示一些实际代码。具体来说,Navi 的真正含义是什么。查看帮助中心中有关编写最小、完整且可验证的示例的部分。
  • 你为什么要这样做?毫无意义的运算符重载,特别是对于像 std::list 这样的现有类,只会导致其他阅读您的代码的人感到困惑。

标签: c++ pointers overloading operator-keyword


【解决方案1】:

您的问题在于指针的常量。 如果你看这里 Question about const pointer in C++?

您将看到将参数从 const Ort& b 更改为 Ort *const b 应该解决你的问题。 (因为您想将 const 指针推回 List)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 2014-09-13
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    相关资源
    最近更新 更多