最佳答案
在使用模板的时候,我遇到了一个需要,为了减少复制/粘贴操作,需要让基类构造函数可以从继承的类中访问以创建对象。
我一直在考虑通过 using
关键字以相同的方式实现函数大小写,但是没有用。
class A
{
public:
A(int val) {}
};
class B : public A
{
};
class C : public A
{
public:
C(const string &val) {}
};
class D : public A
{
public:
D(const string &val) {}
using A::A; // g++ error: A::A names constructor
};
void main()
{
B b(10); // Ok. (A::A constructor is not overlapped)
C c(10); // error: no matching function to call to 'C::C(int)'
}
因此,我的问题是: 在继承类中的新构造函数被声明之后,有没有办法导入基类构造函数?
或者只有一种方法可以声明新的构造函数并从初始化器列表中调用基本构造函数?