我上课了:
template <typename _T, typename _E>
class CRoute
{
public:
CRoute& Add(const _T & u1 , const _T & u2 , const _E & e);
...
private:
map < _T, vector<pair<_T,_E>> > graf;
};
添加功能必须将元素分配给graf;
BUT!我不能使用_T和_E类型的默认构造函数。因此,我无法做到:
template <typename _T, typename _E>
CRoute<_T,_E>& CRoute<_T,_E>::Add(const _T & u1 , const _T & u2 , const _E & e){
graf[u1].emplace_back( u2 , e );
return *this;
}
我只能使用复制构造函数。 我该怎么做?
答案 0 :(得分:0)
您可以从std::map::emplace_back
中获取灵感并让自己的Add
函数以相同的方式工作,为构建_T
和_E
对象提供参数,而不是已经构造这些对象的实例。
否则你唯一的选择是采用右值引用并希望你的类型可以移动。