在我的C++项目中遇到“已经有一个主体”错误的原因是什么?如何修复它?[已关闭]

8fq7wneg  于 2022-12-15  发布在  其他
关注(0)|答案(2)|浏览(173)

**已关闭。**此问题为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)”已具有函数体
我在其他构造函数和析构函数中也遇到了同样的错误。所以,我的错误是一般性的。原因是什么?

iaqfqrcu

iaqfqrcu1#

错误消息明确告诉它:你定义了User::User两次,一次在类声明外面,一次在类声明里面。

ogq8wdun

ogq8wdun2#

在头文件中,您定义的构造函数的主体为空:

User(string username)   {}

然后,在cpp文件中,定义具有非空主体的相同构造函数:

User::User(string username) {  // constructor of User class
    this->name = &username; 
    num_comments = new unsigned int(0);
}

要解决这个问题,在头文件中,你需要用分号代替大括号:

User(string username);

相关问题