gpt4 book ai didi

c++ - 如何创建特殊词

转载 作者:行者123 更新时间:2023-11-30 01:10:26 24 4
gpt4 key购买 nike

我正在尝试构建一个模板类 A 并通过一个特殊的词“NONE”调用它的默认构造函数。考虑我有:

template<class T>
class A {
public:
A():_val(0);
A(T val):_val(val);
private:
int _val;
}

我希望能够写作

A<int> x = None;

这将调用 A();

我在想也许我可以使用某种 typedef,但我不知道该怎么做

最佳答案

您可以提供一个虚拟类型和一个构造函数,该构造函数采用该类型并执行与默认构造实例等效的操作。例如,

struct None_t {};

constexpr None_t None{}; // const None_t None = {}; in C++03

template<class T>
class A {
public:
A() : _val() {};
A(None_t) : A() {} // A(None_t) : _val() {} in C++03
A(T val) : _val(val) {}
private:
T _val;
};

int main()
{
A<int> x = None;
}

请注意,我将 _val 更改为从 intT,否则模板没有多大意义。

关于c++ - 如何创建特殊词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37772809/

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