有什么办法可以让我做以下工作,还是有办法解决?我一定错过了什么。
class base
{
public:
int someInt;
virtual void someFunction(){}
};
class derived : public base
{
public:
void someFunction(){}
void anotherFunction(){}
};
int main (int argc, char * const argv[]) {
base* aBasePointer = new derived;
aBasePointer->anotherFunction();
delete aBasePointer
return 0;
}
答案 0 :(得分:7)
使用dynamic_cast<>
向下转换指向派生类的指针(不要忘记测试结果)。
e.g
if ((derived* p = dynamic_cast<derived*>(aBasePointer)))
{
// p is of type derived.
p->anotherFunction();
}
答案 1 :(得分:1)
Nim建议会起作用,但如果你正在进行垂头丧气,你几乎肯定会遇到设计问题。如果你解释一下你想要达到的目标,我们可以建议一个更好的选择。
答案 2 :(得分:-2)
这将有效
int main (int argc, char * const argv[]) {
derived* aDerivedPointer = new derived;
aDerivedPointer->anotherFunction();
delete aDerivedPointer
return 0;
}
除此之外,您需要提供有关您要完成的内容的更多信息。