尝试一些东西时,我想用c++ shell online做一个只有1个文件的例子。
我尝试了一个示例,您可以通过this之类的引用传递此内容:
// Example program
#include <iostream>
#include <string>
class B;
class A{
public:
void passMe(){
B b;
b->handle(*this);
};
void runMe(){
std::cout << "Did run. ";
};
};
class B{
public:
void handle(A& refer){
refer.runMe();
};
};
int main()
{
A a;
a.passMe();
}
但我有一个循环参考。 Normaly你会向前声明(在cpp文件中有一个include),但据我所知,在给出的例子中你不需要(你需要使用1个文件)。
还有其他选项可以使示例代码有效吗?
答案 0 :(得分:4)
如何解决?修复拼写错误并稍后定义passMe
。
#include <iostream>
#include <string>
class A{
public:
void passMe();
void runMe(){
std::cout << "Did run. ";
};
};
class B{
public:
void handle(A& refer){
refer.runMe();
};
};
void A::passMe() {
B b;
b.handle(*this);
}
int main()
{
A a;
a.passMe();
}