the*_*ull 1 c++ inheritance templates
假设我们有以下示例类:
class A {
public:
explicit A(int foo) { }
void test() {
cout << "I'm in A" << endl;
}
};
class B {
public:
explicit B(string bar) { }
void test() {
cout << "I'm in B" << endl;
}
};
Run Code Online (Sandbox Code Playgroud)
我想定义一个子类来继承一个模板化的类,它可以被专门化为A或B之一.我面临的问题是A和B有不同的构造函数参数,所以构建Child的构造函数证明是有点烦躁.如果我做以下事情,事情就会起作用:
template <class ParentClass>
class Child : public ParentClass {
public:
Child<B>() : ParentClass("foo") {
}
};
int main() {
Child<B> c;
c.test();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,我也希望能够做类似的事情Child<A> c.这可能吗?
谢谢!
您可以专注于每个班级:
template <class ParentClass>
class Child : public ParentClass {
public:
Child();
};
template <>
Child<A>::Child() : A(42) {}
template <>
Child<B>::Child() : B("42") {}
Run Code Online (Sandbox Code Playgroud)