gpt4 book ai didi

c++ - 模板是否需要重载构造函数?

转载 作者:太空狗 更新时间:2023-10-29 23:49:08 25 4
gpt4 key购买 nike

我刚看完一些模板视频,我想我遗漏了一些概念。为什么不调用构造函数,或者为什么在构造函数未用所需数据类型重载时不创建对象?因为我正在写 <int>编译器不知道我要处理一个 int 吗?

template <class T>
class Generic {
T var;
public:
Generic(){cout << "ctor called " << endl;}
//Generic (T v) {var = v;}
};


int main () {

Generic<int> generic1();

}

难道我不能像这样创建一个对象,然后通过setter修改T var的值吗?为什么我需要一个重载的构造函数,例如Generic<int> generic1(9);

最佳答案

这是一个 Most vexing parse问题。

当然你可以通过默认构造函数初始化对象,然后通过setter修改值,这里的问题是你没有定义变量。 Generic<int> generic1();是一个函数声明,命名为generic1 , 不带参数并返回 Generic<int> .

你想要的是

Generic<int> generic1;

Generic<int> generic1{}; // since C++11

关于c++ - 模板是否需要重载构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46283079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com