gpt4 book ai didi

c++ - 如何从另一个类访问 main 中定义的类的对象

转载 作者:行者123 更新时间:2023-11-28 03:07:28 25 4
gpt4 key购买 nike

我有两个类及其各自的命名空间。
A类有一个B类的对象,可以调用B类的方法。


我希望 B 类也从 A 类调用一个方法,为此,我在 classB.h 中包含“classA.h”,但是当我这样做时,我收到一条错误消息......

error C2653: 'classB_namespace' : is not a class or namespace name

我正在为这个项目使用 win32 sdk,我在 classA.cpp 中定义了 WinMain(),在 WinMain() 中我有一个 classA 的对象,它调用在 classB 中定义的 wndProct。

我想从 classB 访问这个 classA 对象(以便在 classA 中调用该方法,这就是我做这一切的原因......)。

如何,更重要的是,如何做到?我在 WinMain() 中对 classA 对象使用 extern 没有用。

所以底线是,我无法使用 WinMain() 中定义的对象从类 A 中定义的类 B 调用该方法。

最佳答案

很可能(但不确定,没有看到代码)这个问题已经出现,因为 C++ 是一次性编译的。因此,#include 不像其他语言(如 C# 或 java)中的使用指令 - 您必须跟踪所有定义以正确的顺序 - 每个类都必须声明(甚至完全声明)在使用之前定义),无论代码是在单个文件中还是在多个包含的 header 中。命名空间不会改变太多 - 必须保持定义顺序。

这是错误的代码,因为类 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;
};
}

关于c++ - 如何从另一个类访问 main 中定义的类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19344280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com