C++ 一个对象可跨我的所有应用程序类访问
我希望有一个对象可以跨我的所有应用程序类访问。所以我想:C++ 一个对象可跨我的所有应用程序类访问,c++,C++,我希望有一个对象可以跨我的所有应用程序类访问。所以我想: #include <iostream> using namespace std; class MyClass { public: MyClass(){} int id(){return -1;} }; extern const MyClass myClass; int main() { cout << myClass.id(); return 0; } 我想我可以做静态My
#include <iostream>
using namespace std;
class MyClass {
public:
MyClass(){}
int id(){return -1;}
};
extern const MyClass myClass;
int main() {
cout << myClass.id();
return 0;
}
我想我可以做静态MyClass MyClass相反,代码>。因此,我将有或多或少相同的功能
最佳/正确的方法是什么?放弃声明和定义中的const
:
extern /* const */ MyClass myClass;
// ^^^^^^^^^^^
或者使id()
函数const
:
int id() const {return -1;}
// ^^^^^
我想我可以做静态MyClass MyClass;,相反因此,我将有或多或少相同的功能
静态
变量只能作为类成员使用
最佳/正确的方法是什么
如果要确保该类只存在一个实例,最好使用Singleton模式:
因此,您可以使用例如MyClass::instance().id()
从任何地方访问单个类实例,并禁止构造其他实例。int-id()const{return-1;}
错误消息说您正在调用non-const方法id()
在const对象上。使方法const
编译器说对myClass的未定义引用@KcFnMi您忘记在另一个文件中为全局myClass
变量提供定义。
extern /* const */ MyClass myClass;
// ^^^^^^^^^^^
int id() const {return -1;}
// ^^^^^
class MyClass {
MyClass(){}
public:
static Myclass& instance() {
static MyClass theInstance;
return theInstance;
}
int id(){return -1;}
};