Mic*_*zov 3 c++ compiler-errors vector
我在我的程序中使用std :: vector,编译时出现此错误:
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/vector.tcc:在成员函数`User&User :: operator =(const User&)'中:
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/vector.tcc:238:从
void std::vector<_Tp, _Alloc>::_M_insert_aux(__gnu_cxx::__normal_iterator<typename _Alloc::pointer, std::vector<_Tp, _Alloc> >, const _Tp&) [with _Tp = User, _Alloc = std::allocator<User>]' /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_vector.h:564: instantiated fromvoid std :: vector <_Tp,_Alloc> :: push_back(const _Tp&)实例化[与_Tp = User,_Alloc = std :: allocator]'main.cpp:100:从这里实例化
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/vector.tcc:238:错误:非静态const成员`const std :: string User :: NAME',can'使用默认赋值运算符
我有"用户"和"用户"类:
class User {
public:
const string NAME;
User(const string &name, const bool &isMain = false) : NAME(name), isMain(isMain) {};
void addFollower(User * user);
void addReplier(User * user, const int &count);
void addMentioner(User * user, const int &count);
void addRetweeter(User * user, const int &count);
private:
vector<User *> followedBy, repliedBy, mentionedBy, retweetedBy;
vector<int> replyCount, mentionCount, retweetCount;
bool isMain;
};
class Users {
public:
vector<User> users;
void addUser(const string &name, bool isMain = false);
User * findUser(const string &name);
friend ostream & operator <<(ostream &outStream, const Users &users);
User & operator [] (unsigned int index);
};
Run Code Online (Sandbox Code Playgroud)
这就是事情.该错误是由Users :: addUser()方法引起的:
void Users::addUser(const string &name, bool isMain) {
User newUser(name, isMain);
users.push_back(newUser);
}
Run Code Online (Sandbox Code Playgroud)
如果我删除第二行
users.push_back(newUser);
Run Code Online (Sandbox Code Playgroud)
它运行正常,但是,它不像你看到的那样工作,因为它阻止我将新记录添加到"users"向量数组中.如果有人告诉我原因是什么,我会感恩的.谢谢
您必须提供复制构造函数才能使用push_back,因为您的类包含非静态const成员.
您可以使用getter轻松解决此问题:
class User{
public:
string NAME() const { return m_name; }
/* ... */
private:
string m_name;
/* ... */
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3142 次 |
| 最近记录: |