如何在 class C++ 中初始化模板对象?
How to initialize a template object inside a class C++?
我想像这样创建一个模板节点class
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
你也可以写
Node() : val() {}
或
Node() : val{} {}
或者在class定义中写
T val {};
我想像这样创建一个模板节点class
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
你也可以写
Node() : val() {}
或
Node() : val{} {}
或者在class定义中写
T val {};