如何在cpp文件中定义静态方法。 (C++)

How to define static method in a cpp file. (C++)

我想将我的 class 放在单独的 .h 文件中,并将实现放在 .cpp 文件中.我 运行 遇到的问题是“methodname 的多重定义”。如果我将两个文件的内容放在 .hpp 文件中,它可以工作,但我不确定是否应该使用它。

.h 文件:

#pragma once

class Nincs;



class Sugar
{
    public:
        Sugar(){}

};

class Nincs : public Sugar
{
     private:
        static Nincs* ins;
        Nincs(): Sugar() {};
    public:
        static Nincs* instance();

}; 

.cpp 文件:

#include "Sugar.h"


Nincs* Nincs::ins = nullptr;


Nincs* Nincs::instance() //the error is with this line
{
        if (ins == nullptr)
        {
            ins = new Nincs();
        }
        return ins;
};

主 .cpp 文件:

#include <iostream>

#include "Sugar.cpp"




using namespace std;

int main()
{

    Nincs* n = Nincs::instance();


    return 0;
}

基本上,我正在努力用 C++ 制作一个简单的单例 class。

问题是您包含了源文件(Sugar.cpp)而不是头文件(Sugar.h)。

要在 main.cpp 中解决此问题,请将 #include "Sugar.cpp" 更改为:

#include "Sugar.h"

还建议我们永远不要包含源文件

Working demo