【发布时间】:2014-03-12 12:12:56
【问题描述】:
我有两个 cpp 类,比如说 ClassA 和 ClassB。我有两个相应地指向该类的指针,比如说pointerA 和pointerB。现在我有一个通用的 void* 指针,我想根据某些条件指向 ClassA 或 ClassB。在这种情况下会出现错误错误 C2227:'->GetPosition' 的左侧必须指向类/结构/联合/泛型类型类型是 'void *'。
如何避免此类错误?
ClassA {
void GetPosition();
}
ClassB {
void GetPosition();
}
main() {
ClassA *pointerA;
ClassB *pointerB;
void *generic_pointerAorB;
pointerA = GetAddrOfClassA();
pointerB = GetAddrOfClassB()
generic_pointer = pointerA;
//********************** error at the code below ******************************
//error C2227: left of '->GetPosition' must point to class/struct/union/generic type.
//type is 'void *'
generic_pointer->GetPosition();
//*****************************************************************************
}
【问题讨论】:
-
首先将指针转换为正确的类型。
-
为两者定义一个基类,定义您要使用的通用虚函数。您正在尝试在 C++ 中进行鸭式输入;它不会工作:)
-
也不应该
generic_pointerAorB只是generic_pointer?截至目前,generic_pointer尚未声明。 -
这闻起来像 meta.stackexchange.com/questions/66377/what-is-the-xy-problem 。告诉我们您真正想要做什么(而不是如何)。
标签: c++ pointers void-pointers