如何在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"
还建议我们永远不要包含源文件。
我想将我的 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"
还建议我们永远不要包含源文件。