Xcode:Singleton实现错误:"重新定义课程"

时间:2017-04-17 22:23:09

标签: c++ ios xcode compiler-errors

我试图在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;。

enter image description here

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

1 个答案:

答案 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;
}