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