C++中通过对象调用folder()触发show()失效问题排查
问题解决:调用folder()未触发show()执行
你代码里的问题很明确:在folder()函数内部,void show();这行代码并不是函数调用,而是对show()函数的声明,所以不会触发show()的执行。
要实现obj.folder() -> show()的流程,只需要把这行代码修改为实际的函数调用即可,有两种写法:
- 直接调用成员函数:
show(); - 用
this指针明确指定当前对象的成员函数:this->show();(可读性更强)
修正后的完整代码如下:
#include<iostream> using namespace std; int count=0; class file{ int roll; public: void folder() { ++count; roll=count; show(); // 这里修改为函数调用 } void show(){cout<<roll<<endl;} }; int main() { file obj; obj.folder(); }
运行这段代码后,调用obj.folder()就会先更新count和roll,然后自动执行show()输出1。
内容的提问来源于stack exchange,提问作者Ghimire Suraj
相关产品推荐
相关产品推荐

