简单指针问题

Simple Pointer Question

本文关键字:问题 指针 简单      更新时间:2023-10-16

编辑:别介意,解决了。。。我在ClassBClassC中声明了类型。。。。

所以我在一个名为ClassA的类中有一个指针,名为PointA

ClassAClassB都派生自ClassC,后者有一个名为类型的变量。

在代码的一部分中,我将ClassB的一个新实例分配给ClassAPointA变量。指针被声明为指向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的实例。

当我使用指针时,我做错了什么,导致类型的值不正确?

我怀疑您在填充PointA时进行了非法强制转换。ClassB需要是PointA定义要指向的东西的子类(typeof(*ClassA->PointA((,否则您试图做的事情将不起作用。

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

您需要发布更多的代码,向我们展示类是如何声明的。根据你发布的内容,人们只能胡乱猜测。。。最重要的是,你发布的代码显然是"假的",也就是说,它不是你用来做实验的代码。ClassA->PointA->type表达式甚至不会编译。张贴真实代码。