gpt4 book ai didi

c++ - Xcode:单例实现错误: "Redefinition of class"

转载 作者:行者123 更新时间:2023-11-28 05:11:15 24 4
gpt4 key购买 nike

我正在尝试在 Xcode 项目中实现 C++ 单例,但出现此错误:

Redefinition of class

这是我的代码(.hpp 文件):

#ifndef DoingSomething_hpp
#define DoingSomething_hpp
#include <stdio.h>
#endif /* DoingSomething_hpp */

class DoingSomething {

public:
static DoingSomething *instance();
};

这是我的 .cpp 文件:

#include "DoingSomething.hpp"
class DoingSomething
{
static DoingSomething *shareInstance;
public:
int doSomething()
{
/*
*/
return 6;
}

static DoingSomething *instance()
{
if (!shareInstance)
shareInstance = new DoingSomething;
return shareInstance;
}
};

在这一行(在我的 cpp 文件上)

class DoingSomething 

我收到这个错误:

“DoingSomething”的重新定义。

enter image description here

你们中有人知道我做错了什么或如何解决这个错误吗?非常感谢您的帮助。

最佳答案

您在同一翻译单元 DoingSomething.cpp 中声明了两次类,即一次在您包含的头文件中,另一次在 cpp 文件本身中。将类声明放在头文件中,将实现放在.cpp-file:

标题,即 DoingSomething.hpp

#ifndef DoingSomething_hpp
#define DoingSomething_hpp
#include <stdio.h>

class DoingSomething {

public:
int doSomething();
static DoingSomething *instance();
};

#endif /* DoingSomething_hpp */

实现,即 DoingSomething.cpp

#include "DoingSomething.hpp"

int DoingSomething ::doSomething() {
return 6;
}

DoingSomething *DoingSomething::instance() {
if (!shareInstance)
shareInstance = new DoingSomething;
return shareInstance;
}

关于c++ - Xcode:单例实现错误: "Redefinition of class",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43460591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com