简单的指针问题

时间:2011-08-15 06:29:25

标签: c++ pointers

编辑: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 的错误值,我做错了什么?

2 个答案:

答案 0 :(得分:0)

我怀疑你在填充PointA时做了非法演员。 ClassB需要是PointA被定义为指向的东西的子类(typeof(* ClassA-> PointA)),否则你想要做的事情将无法工作。

答案 1 :(得分:0)

根据您的代码,ClassAClassB都有一个名为type的成员。由于您可以将PointA指向ClassA对象或ClassB对象,因此这些类之间必须存在父子关系(是吗?)。如果是,您确定没有创建两个完全不相关的type成员:ClassA中的一个和ClassB中的另一个成员?您希望检查ClassB::type,但实际上您会检查ClassA::type,这就是您看到不同(“错误”)值的原因。

您需要发布更多代码,以向我们展示如何声明类。你发布的内容只能做出疯狂的猜测...最重要的是,你发布的代码显然是“假的”,即它不是你做实验的代码。 ClassA->PointA->type表达式甚至不会编译。发布实际代码。