如何从另一个类访问 main 中定义的类 A 的对象
how to access an object of classA defined in main from another class
我有两个类,它们各自的命名空间。
类 A 具有类 B 的对象,并且可以调用类 B 的方法。
我希望类 B 也从类 A 调用一个方法,为此,我在类 B.h 中包含"classA.h",但是当我这样做时,我收到一个错误说..
error C2653: 'classB_namespace' : is not a class or namespace name
我正在为这个项目使用 win32 sdk,我已经在 classA.cpp 中定义了 WinMain(),在 WinMain() 中我有一个 classA 的对象,它调用在 Class B 中定义的 wndProct。
我想从类 B 访问这个 classA 对象(以便在类 A 中调用该方法,这就是我做这一切的原因......
如何,更重要的是,它能做到??我在WinMain()中的classA对象上使用extern不起作用。
所以底线是,我无法使用 WinMain() 中定义的对象从类 B 调用该方法,该方法在类 A 中定义。
很可能(但不是肯定的,没有看到代码)这个问题已经出现,因为它是一次性编译的C++。因此,#include
不像其他语言(如 C# 或 java)中的 usage 指令 - 您必须跟踪所有定义以正确的顺序 - 每个类在使用之前都必须声明(甚至完全定义),无论代码是在单个文件中还是多个包含标头中。命名空间不会改变太多 - 必须保持定义的顺序。
这是错误的代码,因为在声明 B 类之前就提到了它:
class A {
B objB;
};
class B {
A *parent;
};
正确的申报顺序是:
class A;
class B {
A *parent;
};
class A {
B objB;
};
或者,每个类位于单独的命名空间中,它将如下所示:
namespace classA_namespace {
class A;
}
namespace classB_namespace {
class B {
classA_namespace::A *parent;
};
}
namespace classA_namespace {
class A {
classB_namespace::B objB;
};
}
相关文章:
- 自定义对象的dlib序列化在gcc中失败
- 如何将带有自定义对象的容器从C++传递到QML
- 直接在 unordered_map 的方法中使用哈希,而不是生成哈希的用户定义对象
- 如何使用Q_PROPERTY公开自定义对象列表
- 如何在自定义对象的<<运算符中添加自定义前缀
- 将自定义对象作为参数从目标 C 传递到 C++
- 如何使用构造函数声明指向用户定义对象的指针?
- 使用自定义对象声明shared_ptr数组时出现错误 C2664
- 在具有自定义对象的集合中查找值
- std::set 不会检测到重复的自定义对象
- 如何使用自定义对象的序列化在 c++ 中编写自定义二进制文件处理程序
- std::排序为排序自定义对象时出现的向量引发错误
- 如何通过引用对用户定义对象的类型集 (STL) 的数组元素进行增强迭代?
- 具有自定义对象的C 优先级队列
- 自定义对象构造函数在循环外部循环
- 带有自定义对象的C 范围循环
- 为什么不允许通过 decltype(lamda) 定义对象,我该如何改进它?
- 如何正确地将规则 5(或零?)应用于包含带有字符串的自定义对象向量的类
- 编写安全包装类以管理用户定义对象的指针
- 如何在包含自定义对象的容器中使用分区函数C++