**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
14小时前关门了。
Improve this question
我正在做一个项目,其中包括在多个类之间共享对象。
User::User(string username) { // constructor of User class
this->name = &username;
num_comments = new unsigned int(0);
}
这是我在cpp文件中构造函数的实现,头文件中类的定义是
class User {
private:
string *name;
vector<Post> posts;
unsigned int *num_comments;
public:
User(string username) {}
~User() {}
Post& createPost(string content);
vector<Post*> getPosts();
int getnumcomments();
string getName();
};
当我尝试运行代码时,我进入了错误C2084:函数“User::User(std::string)”已具有函数体
我在其他构造函数和析构函数中也遇到了同样的错误。所以,我的错误是一般性的。原因是什么?
2条答案
按热度按时间iaqfqrcu1#
错误消息明确告诉它:你定义了
User::User
两次,一次在类声明外面,一次在类声明里面。ogq8wdun2#
在头文件中,您定义的构造函数的主体为空:
然后,在cpp文件中,定义具有非空主体的相同构造函数:
要解决这个问题,在头文件中,你需要用分号代替大括号: