我试图在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
我收到此错误:
重新定义&#34;做某事&#34;。
你们中的任何人都知道我做错了什么或者如何解决这个错误? 我非常感谢你的帮助。
答案 0 :(得分:1)
您要在同一个翻译单元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;
}