我要访问构造函数,成员初始化需要的次数很多。当类对象由程序初始化时,将调用默认构造函数。因此,同时,构造函数调用构造函数初始化了我提到的内容。
class A {
public:
A();
void fun1();
void fun2();
};
A::A()
: fun1()
, fun2()
{
cout << " Hi" << endl;
}
void A::fun1()
{
cout << "Hello" << endl;
}
void A::fun2()
{
cout << "Bye" << endl;
}
int main()
{
A obj_a;
return 0;
}
预期结果:
你好,你好,再见
错误消息
error: class ‘A’ does not have any field named ‘fun1’
A::A():fun1(), fun2() {
答案 0 :(得分:1)
您正在初始化器列表中调用函数,您应该在那里初始化数据成员。编译器会查找名为fun1和fun2的数据成员,但找不到任何成员,因此会通知您。 您可以在下面尝试这样:
class A {
public:
A();
void fun1();
void fun2();
};
A::A() {
cout << " Hi" << endl;
fun1();
fun2();
}
void A::fun1() {
cout << "Hello" << endl;
}
void A::fun2() {
cout << "Bye" << endl;
}
int main() {
A obj_a;
return 0;
}
答案 1 :(得分:0)
您遇到错误:
error: class ‘A’ does not have any field named ‘fun1’
A::A():fun1(), fun2() {
因为class A
没有任何名称为fun1或fun2的数据成员。
成员初始化列表用于初始化数据成员或调用基本构造函数。
有关详细信息,请参见:Constructor & Member Initilization List
类的方法可以在构造函数体中调用,例如:
A::A()
{
fun1();
fun2();
}