我试过这个没有用:
void Map::OnLMClick(short xPos, short yPos)
{
SObject* pSObject = pEditWindow->GetSelectedItem();
if (pSObject==SOTile)
{
/* Do */
我试过这个作为测试:
SObject* EditorWindow::GetSelectedItem()
{
return pSOTile[1]; //pSOTile[1] is a valid pointer, member of EditorWindow
}
SOTile 类是基类 SObject 的子类。那么,是否可以创建一个 Base* 来返回其子项*之一,然后让程序根据返回的子项做出不同的 react ?如果是这样,那么我如何才能访问不是 base 成员的子成员的成员?
最佳答案
如果你的类型是多态的(即如果它们至少有一个虚函数),你可以使用dynamic_cast
:
Base* pObject = get_object(); // May return a pointer to Derived
Derived* pDerived = dynamic_cast<Derived*>(pObject);
请注意,动态向下转型有时是糟糕设计的一个指标。尝试思考在您的层次结构中更好地安排虚函数是否会有所帮助。
在不了解具体应用领域的情况下,我无法给出更具体的建议。
关于c++ - 有没有办法将 child *返回到基地*并评估哪个 child *已返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15960145/