如何将未知类型的数据成员初始化为默认值
How to initialize a data member of unknown type to a default
所以我有一个类
template<typename edge_val_type>
class Graph {
struct edge {
int index_;
edge_val_type v_;
edge(int index, edge_val_type v) : index_(index), v_(v) {}
}
如何将v_
初始化为某个默认值?因为此时程序不知道edge_val_type
是什么。
像这样:
edge()
: index_( 0 ), v_{}
{}
听起来你要求构造函数的默认参数。你可以写:
edge(int index, edge_val_type v = {}) : index_(index), v_(v) {}
这将允许用法edge e(1);
和e = edge(1);
,并且e = 1;
,因为这不是一个explicit
构造函数。
如果v_
是一个类并且有default c-tor
,你为什么不从c-tor initialize list
中省略它呢?
在这种情况下,v_
将被default constructed
.
相关文章:
- 类定义中的静态数据成员初始化
- 为什么在静态数据成员初始化器中未完全定义类
- 重载放置新运算符,具有数据成员初始化以及与普通新运算符的差异
- 模板非静态数据成员初始化程序何时实例化
- C++静态数据成员初始化
- 使用初始化列表时的 C++ 数据成员初始化顺序
- Cocos2d-x AppDelegate数据成员初始化丢失
- 基类构造函数和数据成员初始化的奇怪行为
- Visual Studio 2013 因非静态数据成员初始化而崩溃
- std::vector的非静态数据成员初始化器/调用构造函数
- GCC 默认 int 数据成员初始化
- 何时在C++中使用哪个数据成员初始化
- Clang++ 非静态数据成员初始化错误?C++11.
- C++11;非静态数据成员初始化是否可以访问其他数据成员
- 类C++的静态函数成员中的静态数据成员初始化顺序
- C++警告非静态数据成员初始化程序
- 抱歉,未实现:c++ 11中的非静态数据成员初始化器
- c++ RPG错误:不允许使用数据成员初始化式
- 静态数据成员初始化顺序
- 在c++ 0x中,非静态数据成员初始化式是否覆盖隐式复制构造函数?