我使用的std ::向量在我的計劃,我得到這個錯誤在編譯時:C++編譯向量誤差,使用矢量時::的push_back()方法
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/vector.tcc: In member function `User& User::operator=(const User&)':
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/vector.tcc:238: instantiated from
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 from
void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = User, _Alloc = std::allocator]'main.cpp:100: instantiated from here
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/vector.tcc:238: error: non-static const member `const std::string User::NAME', can't use default assignment operator
我有類「用戶」和「用戶」:
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);
};
這是事情。該錯誤是由該方法用戶:: ADDUSER()引起的:
void Users::addUser(const string &name, bool isMain) {
User newUser(name, isMain);
users.push_back(newUser);
}
如果我刪除第二行
users.push_back(newUser);
它工作正常,但很好,它不會像,你的工作請參閱因爲它阻止我將新記錄添加到「用戶」矢量數組中。如果有人告訴我是什麼原因,我會很感激。謝謝
[非靜態const成員可能重複,不能使用默認賦值運算符](http://stackoverflow.com/questions/634662/non-static-const-member-cant-use-default-assignment-運營商) –