【问题标题】:How to initialize a template object inside a class C++?如何在 C++ 类中初始化模板对象?
【发布时间】:2022-01-14 17:45:15
【问题描述】:

我想创建一个这样的模板节点类

template <class T>
class Node {
public:
    Node() {
        val = T;
        // Does not work: new T, NULL, 0, ""
    }
    // ...
private:
    vector<Node<T> *> children;
    T val;
    Node<T> * parent = NULL;
}

构造函数应该没有初始值作为参数,并且不允许重载。我可能不会在构造函数中做任何事情,但例如对于整数,我希望这个基值为 0,等等。本质上,我试图避免的问题是消除未定义的行为,例如使用整数时的此类值 (第一个是没有设置值的根): -1021203834 1 2 11 12 21 22 1 11 12

【问题讨论】:

标签: c++ class templates initialization default-constructor


【解决方案1】:

你可以写

Node() : val() {}

Node() : val{} {}

或者在类定义中写

T val {};

【讨论】:

  • 注意:T 必须是默认可构造的才能正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
  • 2016-02-25
  • 1970-01-01
相关资源
最近更新 更多