编辑:nevermind,solve ...我在 ClassB AND ClassC ....中声明了类型....
所以我在名为 ClassA 的类中有一个名为 PointA 的指针。
ClassA 和 ClassB 都来自 ClassC ,它有一个名为 type 的变量。
在代码部分中,我将 ClassB 的新实例分配给 ClassA 的 PointA 变量。声明指针指向 ClassC ,其中 ClassB 派生自。
然后我在 OtherClass (不相关)中有一个函数,看起来有点像这样:
void OtherClass::function_name(ClassA* A,ClassB* B) {
B->type; //displays the correct value of type
A->PointA->type; //displays the wrong value of type
(A->PointA)->type; //displays the wrong value of type
}
我知道 PointA 正确指向 ClassB 的实例。
使用指针时,如果得到 type 的错误值,我做错了什么?
答案 0 :(得分:0)
我怀疑你在填充PointA时做了非法演员。 ClassB需要是PointA被定义为指向的东西的子类(typeof(* ClassA-> PointA)),否则你想要做的事情将无法工作。
答案 1 :(得分:0)
根据您的代码,ClassA
和ClassB
都有一个名为type
的成员。由于您可以将PointA
指向ClassA
对象或ClassB
对象,因此这些类之间必须存在父子关系(是吗?)。如果是,您确定没有创建两个完全不相关的type
成员:ClassA
中的一个和ClassB
中的另一个成员?您希望检查ClassB::type
,但实际上您会检查ClassA::type
,这就是您看到不同(“错误”)值的原因。
您需要发布更多代码,以向我们展示如何声明类。你发布的内容只能做出疯狂的猜测...最重要的是,你发布的代码显然是“假的”,即它不是你做实验的代码。 ClassA->PointA->type
表达式甚至不会编译。发布实际代码。