将参数传递给 class 之外的 Base-Class 构造函数
Passing Parameters to Base-Class Constructors outside class
我想在 Derived 之外定义构造函数 class。我怎样才能实现 this.If 我在 class 里面定义了构造器它起作用了。
感谢任何帮助。
下面是我的代码。
class Base
{
private:
int var1;
public:
Base();
Base(int var1);
~Base();
void print()
{
cout<<"Base"<<endl;
}
};
class Derived:public Base
{
private:
int var2;
public:
Derived();
Derived(int var2,int var1):Base(var1);
~Derived();
void print()
{
cout<<"Derived"<<endl;
}
};
Base::Base()
{
cout<<"Constructing Base"<<endl;
}
Base::Base(int var1)
{
cout<<"Constructing Base with "<<var1<<endl;
}
Base::~Base()
{
cout<<"Destructing Base"<<endl;
}
Derived::Derived()
{
cout<<"Constructing Derived"<<endl;
}
Derived::Derived(int var2,int var1):Base(var1)
{
cout<<"Constructing Derived with "<<var2<<endl;
this->var2 = var2;
}
Derived::~Derived()
{
cout<<"Destructing Derived"<<endl;
}
int main()
{
Derived d = Derived(2,1);
d.print();
return 0;
}
我在编译时遇到以下错误。
derive.cpp: In constructor ‘Derived::Derived(int, int)’:
derive.cpp:25:45: error: expected ‘{’ at end of input
Derived(int var2,int var1):Base(var1);
^
derive.cpp: At global scope:
derive.cpp:54:1: error: redefinition of ‘Derived::Derived(int, int)’
Derived::Derived(int var2,int var1):Base(var1)
^
derive.cpp:25:9: error: ‘Derived::Derived(int, int)’ previously defined here
Derived(int var2,int var1):Base(var1);
调用基础class构造函数是实现。因此,它不属于 class 声明。 声明你的构造函数为
Derived(int var2, int var1);
不过你的实现没问题。
我想在 Derived 之外定义构造函数 class。我怎样才能实现 this.If 我在 class 里面定义了构造器它起作用了。
感谢任何帮助。
下面是我的代码。
class Base
{
private:
int var1;
public:
Base();
Base(int var1);
~Base();
void print()
{
cout<<"Base"<<endl;
}
};
class Derived:public Base
{
private:
int var2;
public:
Derived();
Derived(int var2,int var1):Base(var1);
~Derived();
void print()
{
cout<<"Derived"<<endl;
}
};
Base::Base()
{
cout<<"Constructing Base"<<endl;
}
Base::Base(int var1)
{
cout<<"Constructing Base with "<<var1<<endl;
}
Base::~Base()
{
cout<<"Destructing Base"<<endl;
}
Derived::Derived()
{
cout<<"Constructing Derived"<<endl;
}
Derived::Derived(int var2,int var1):Base(var1)
{
cout<<"Constructing Derived with "<<var2<<endl;
this->var2 = var2;
}
Derived::~Derived()
{
cout<<"Destructing Derived"<<endl;
}
int main()
{
Derived d = Derived(2,1);
d.print();
return 0;
}
我在编译时遇到以下错误。
derive.cpp: In constructor ‘Derived::Derived(int, int)’:
derive.cpp:25:45: error: expected ‘{’ at end of input
Derived(int var2,int var1):Base(var1);
^
derive.cpp: At global scope:
derive.cpp:54:1: error: redefinition of ‘Derived::Derived(int, int)’
Derived::Derived(int var2,int var1):Base(var1)
^
derive.cpp:25:9: error: ‘Derived::Derived(int, int)’ previously defined here
Derived(int var2,int var1):Base(var1);
调用基础class构造函数是实现。因此,它不属于 class 声明。 声明你的构造函数为
Derived(int var2, int var1);
不过你的实现没问题。