【发布时间】:2019-03-04 17:03:46
【问题描述】:
我有一个模板类“Derived”,它执行构造函数继承:
template <class T>
class Derived : public T
{
using T::T;
Derived()
{
std::cout<<"in derived";
}
};
我的基类有一个需要参数的构造函数:
class Base
{
public:
Base(int a)
{
std::cout<<"in base";
}
};
当我创建 Derived 类型的对象时,似乎没有调用派生构造函数:
Derived<Base> derived(2);
在“基础”中打印;
为什么?有没有办法告诉它调用 Derived 构造函数?
【问题讨论】:
-
你为什么期望它被调用?这是一个无参数构造函数,您正在调用一个带参数的构造函数。另外,模板部分与问题有什么关系?如果不是模板,情况会不会一样?
标签: c++ templates inheritance