复制构造函数错误c2039

Copy constructor error c2039

本文关键字:c2039 错误 构造函数 复制      更新时间:2023-10-16

嗨,伙计们!我有一个让我头疼的代码。我想要一些帮助。这是我的.h文件。

#include <iostream>
#include <string>
using namespace std;
namespace UI{
class Comanda
{
private:
    const string _nume;
public:
    Comanda();
    Comanda(const string &nume);
    virtual ~Comanda();
    const string& Nume() const;
    virtual void AsteaptaEnter();
    virtual void Execute();
};
};

和.cpp:

#include <iostream>
#include <string>
#include "Comanda.h"
#include "Exceptii.h"
using namespace std;
using namespace UI;
Comanda::Comanda()
{
    cout << "Comanda()" << endl;
}
Comanda::Comanda(const string &nume)
{
    _nume = nume._nume;
}

编译器显示了这个错误:

错误C2039:"_nume":不是"std::basic_string<"的成员_Elem,_Traits,_Ax>'

我该怎么办?提前感谢!

必须初始化ctor的初始值设定项列表中的常量成员,而且nume._nume无效。

Comanda::Comanda(const string &nume) : _nume(nume) {}
                                     ^^^^^^^^^^^^^

你可能是指

Comanda::Comanda(const string &nume)
{
    _nume = nume;
}

顺便说一下,它不是一个复制构造函数。

_nume=nume_nume;这是错误的

它应该是_nume=nume;

正如@Cornstrails正确指出的那样,由于_nume是const,在任何情况下都无法完成上述任务。