【发布时间】:2011-09-27 23:12:56
【问题描述】:
在 C++ 中是否可以从父函数调用子函数。
举个例子:父类在函数中定义(解析)一般工作流程。然后,工作流调用代表流的一部分的不同方法 (parseElementA)。这些函数可以被子类覆盖,如果不是标准函数,它是父类的一部分。
我的问题是:我创建了一个子对象并执行工作流函数(解析)。当在工作流函数中调用被覆盖的函数 (parseElementA) 时,它会从父函数而不是子函数调用该函数。 我该怎么做,它会调用 child 中的覆盖函数。
class Parent {
public:
void parse() { parseElementA(); }
virtual void parseElementA() { printf("parent\n"); }
};
class Child : public Parent {
public:
void parseElementA() { printf("child\n"); }
};
Child child;
child.parse();
输出是父级。我能做些什么让它返回孩子。
非常感谢您的任何建议。
【问题讨论】:
-
首先我编辑了你的代码,但我没有足够的字符来添加(分号)并添加了我的答案,以便它编译得很好......
-
@jHack 但真的有问题吗?我在固定代码中看不到任何问题,所以我不确定现在的问题是什么......
-
@juanchopanza: @juanchopanza: 在
printf之后缺少分号...我可以添加空格,因为public之后缺少冒号,然后我尝试再次编辑但无法仅添加 2 个字符。 -
@jHack,@Steve,好的,我明白了。但是 OP 声称某些行为,鉴于语法错误,这是不可能的。我只是好奇 OP 的真实编译代码是什么样的。
-
@Steve: Homonyms: 我认为你的意思是“覆盖”而不是“覆盖”
标签: c++ compiler-errors syntax-error virtual-inheritance