#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&lt; _Elem,_Traits,_Ax&gt;'
的成员我该怎么办?提前谢谢!
答案 0 :(得分:1)
您必须在ctor的初始化列表中初始化常量成员,nume._nume
也无效。
Comanda::Comanda(const string &nume) : _nume(nume) {}
^^^^^^^^^^^^^
答案 1 :(得分:0)
你可能意味着
Comanda::Comanda(const string &nume)
{
_nume = nume;
}
顺便说一句,它不是复制构造函数。
答案 2 :(得分:0)
_nume = nume._nume;这是错误的
它应该是_nume = nume;
正如@Cornstalks正确指出的那样,在任何情况下都无法实现上述赋值,因为_nume是const。