【发布时间】:2019-01-05 13:46:17
【问题描述】:
我正在尝试制作一个生成器类,它包含生成的类,两者都扩展了相同的类型。 (在我的程序中,它试图使虚拟化的通用思想)如下:
template <class T>
class V : public T {
T& owner; // the T owner
template <class... Args>
explicit V(T &_owner, Args... args) : T(args...) {
owner = _owner; // holds the owner
}
}
...
int main() {
type t = type(512);
V<type> vt = V(t, 256); //ERROR: undefinied reference...(to constructor expanded)
}
但是在函数 main 中调用构造函数时出现错误,我需要更改什么?我在 CLion IDE 中使用 C++17。
感谢您的帮助
【问题讨论】:
-
请在此处按要求发布minimal reproducible example。
-
你试图用
T(args...);做的是创建一个T类型的临时对象。了解构造函数初始化列表。 -
您还需要对
T的完整定义在尝试使用它之前(例如在初始化列表中)。 -
现在,我尝试如下: V
::V(T &_owner, Args... args) : T(args...) { owner = _owner;在构造函数定义中,但仍然有同样的错误。 ://
标签: c++ class templates constructor