C vector编译错误,当使用vector :: push_back()方法时
我在我的程序中使用std :: vector,编译时出现此错误:
我有“用户”和“用户”类: 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); }; 这就是事情.该错误是由Users :: addUser()方法引起的: void Users::addUser(const string &name,bool isMain) { User newUser(name,isMain); users.push_back(newUser); } 如果我删除第二行 users.push_back(newUser); 它工作正常,但是,它不像你看到的那样工作,因为它阻止我将新记录添加到“users”向量数组中.如果有人告诉我原因是什么,我会感恩的.谢谢 解决方法
您必须提供复制构造函数才能使用push_back,因为您的类包含非静态const成员.
您可以使用getter轻松解决此问题: class User{ public: string NAME() const { return m_name; } /* ... */ private: string m_name; /* ... */ }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |