我所有应用程序类都可以访问一个对象
One object accessible across all my application classes
我希望在所有应用程序类中都可以访问一个对象。所以我:
#include <iostream>
using namespace std;
class MyClass {
public:
MyClass(){}
int id(){return -1;}
};
extern const MyClass myClass;
int main() {
cout << myClass.id();
return 0;
}
以及我需要的任何地方,我都会做:
extern const myclass myclass;
只是使用它,例如:
cout << myClass.id();
但是,我错了。返回错误:
error: passing 'const MyClass' as 'this' argument of 'int MyClass::id()' discards qualifiers [-fpermissive]
我想我可以做static MyClass myClass;
。因此,我将具有或多或少具有相同的功能。
最好/正确的方法是什么?
在声明和定义中丢弃const
:
extern /* const */ MyClass myClass;
// ^^^^^^^^^^^
或使id()
功能const
:
int id() const {return -1;}
// ^^^^^
我想我可以做静态的myclass myclass;而不是。因此,我将具有或多或少具有相同的功能。
static
变量仅作为类成员才有意义。
最好/正确的方法是什么?
如果要确保仅存在一个类的实例,请更好地使用 singleton模式:
class MyClass {
MyClass(){}
public:
static Myclass& instance() {
static MyClass theInstance;
return theInstance;
}
int id(){return -1;}
};
因此,您可以使用e.g.MyClass::instance().id()
,并禁止构造其他实例。
相关文章:
- 我们可以访问一个不存在的联盟的成员吗
- C++映射有2个键,这样任何1个键都可以用来获取值
- 函数是否可以访问传递给main()的参数
- 用于解析 win64 堆栈跟踪的命令行客户端(可以访问符号服务器)
- 映射唯一值和重复值的有效方法.可以访问键或值的位置
- 任何人都可以告诉我我的 C++ 代码出了什么问题?
- 任何人都可以弄清楚这段代码如何显示运行错误?它打印无限时间 -1 以及正确答案
- 访问我以前可以访问的功能时出现分段错误
- 任何人都可以解释一下我是否需要 & 在第一个代码片段中
- 为什么我可以访问其他班级的私人成员?
- C ++基础私有方法在将自身转换为派生类后可以访问吗?
- 任何人都可以查明我的递归函数中的错误吗?
- Qt C++创建一个所有类都可以访问的全局变量
- 如何使用C++共享目录,以便每个人都可以访问
- 我所有应用程序类都可以访问一个对象
- 如何存储所有成员都可以访问的数据
- 如何定义全局变量,以便所有类都可以访问/编辑它们
- 声明所有类C++都可以访问的全局变量
- 类的所有成员函数都可以访问的堆栈
- C++无论如何都可以在不知道名称的情况下访问数据成员