如何将未知类型的数据成员初始化为默认值

How to initialize a data member of unknown type to a default

本文关键字:数据成员 初始化 默认值 类型 未知      更新时间:2023-10-16

所以我有一个类

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 .