带参数的 C++ decltype(带构造函数的类)

问题描述 投票:0回答:1

假设我有一个类

T
,带有构造函数
T(int b)
,子类
Tchild
带有类似的构造函数
Tchild(int b)

如何将

decltype
与参数一起使用?

例如:

假设我不知道接下来的两种类型:

T abc{};
Tchild def{};

std::vector<*T> vec;
vec.push_back(new decltype(Tchild));  

我怎样才能用这个构造函数制作

new decltype
->
Tchild(int b)

我是新手,我的问题可能很愚蠢。我试图找到答案,但找不到,也许我问了一个坏问题。

c++ class constructor decltype
1个回答
0
投票

您说

T
Tchild
具有采用
int
参数的构造函数。所以你需要为它们传入
int
值,例如:

T abc{1};
Tchild def{2};

T abc{};
Tchild def{};
不会编译,除非这些类还定义了 默认构造函数,而您没有描述。

无论如何,

new decltype(Tchild)
没有任何意义,因为
Tchild
已经是一种类型,所以你可以只写
new Tchild
。您的意思可能是
new decltype(def)

但是,如果你想调用

Tchild(int b)
,你仍然需要提供构造函数参数值,例如:

vec.push_back(new decltype(def){3});  
© www.soinside.com 2019 - 2024. All rights reserved.