c++ - 复制构造函数并从方法中获取数据

标签 c++ object

所以我正在尝试为类 Orbit 编写一个复制构造函数:

class Orbit
{
     private:
     vector<int> m_start;

     public:
     // ...
     const vector<int>& getStart() {return start; }
}

像那样:

Orbit::Orbit(const Orbit& toCopy)
{
     m_start = toCopy.getStart();
}

但我得到的是:

orbit.cpp:60:29: error: passing ‘const Orbit’ as ‘this’ argument discards qualifiers [-fpermissive]
   m_start = toCopy.getStart();

做什么?

最佳答案

您需要制作 getStart()成员函数 const .这是编译器告诉你的。

 const vector<int>& getStart() const {return start; }

此外,在这种情况下,您可以使用编译器生成的复制构造函数。它将做一个成员明智的复制,这对 std::vector<int> 没问题。 .这样做的好处是,编译器还将为您生成移动构造函数和移动赋值运算符(提供自定义复制构造函数可以防止这种情况发生),如果您有 std::vector,这是有意义的。数据成员,因为移动构造它们的成本很低。

关于c++ - 复制构造函数并从方法中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56949892/

相关文章:

c++帮助将 vector 索引传递给函数

java - 打印作为对象的 TreeMap 值

javascript - 为什么对象的数组属性总是返回对象

c++ - 在多线程程序中同步嵌入式Python

c++ - 在 C++ 98 中的对 vector 中按键查找对

javascript - 推送未按预期运行?

javascript - 简单的 JavaScript 对象比较

java - 我可以创建特定方法的 toString() 吗?不是全类

c++ - 如何在多个接口(interface)上绑定(bind)到同一个 UDP 端口

c++ - 如何在 while 循环中保存 int 值?