我正在尝试从另一个类中调用构造函数。但不幸的是,我收到了这个错误:
Fun2 未在此范围内声明
这是我的代码:
class Fun1 {
public:
Fun1 () {
Fun2("Message");
}
};
class Fun2 {
public:
Fun2 (std::string s) {
std::cout << s;
}
};
int main()
}
如何将我的“消息”发送给另一个类的构造函数?
我正在尝试从另一个类中调用构造函数。但不幸的是,我收到了这个错误:
Fun2 未在此范围内声明
这是我的代码:
class Fun1 {
public:
Fun1 () {
Fun2("Message");
}
};
class Fun2 {
public:
Fun2 (std::string s) {
std::cout << s;
}
};
int main()
}
如何将我的“消息”发送给另一个类的构造函数?
C++ 通常是从上到下编译的。由于您在定义之前尝试使用Fun2它,因此编译器会抱怨。相反,您可以Fun2先简单地定义您的类:
class Fun2 {
public:
Fun2 (std::string s) {
std::cout << s;
}
};
class Fun1 {
public:
Fun1 () {
Fun2("Message");
}
};
现在,当编译器看到您使用标识符Fun2时,它就知道它对应的是什么,因为它已经看到了定义。
在某些情况下,编译器实际上会多次解析代码,并且在这些地方可以在使用标识符后声明标识符(例如,成员)。
如果在 Fun1 中使用 Fun2,则必须先声明:
class Fun2 {
public:
Fun2 (std::string s) {
std::cout << s;
}
};
class Fun1 {
public:
Fun1 () {
Fun2("Message");
}
};
int main()
}
Fun2 在您定义 Fun1 时未定义。
尝试前向声明。
class Fun2;
class Fun 1 {
... class definition
}
class Fun2 {
.... class definition
}