如果我有一个模板化的类,并且有一个模板化的构造函数:
template <typename Tdst>
struct memsrc {
template <typename Tsrc>
memsrc(const Tsrc *src, ssize_t len);
};
我在另一个也有类似模板的类中有该类的实例:
template <typename Tdst>
struct other {
template <typename Tsrc>
other();
memsrc<Tdst> src_;
};
我想在其他构造函数中初始化src_,该怎么做?这个:
src_ = memsrc<Tdst>::memsrc<Tsrc>(nullptr, 0);
不起作用:
rawio.h: In constructor ‘filesrc<Tdst>::filesrc(rawfile*)’:
rawio.h:578:49: error: expected primary-expression before ‘>’ token
mmapsrc_ = memsrc<Tdst>::memsrc<Tsrc>(mmap_.ptr(), mmap_.size());
答案 0 :(得分:0)
您不能为模板构造函数提供显式模板参数-必须推导它们。您可能正在寻找类似的东西
template <typename Tdst>
template <typename Tsrc>
other<Tdst>::other() : src_((Tsrc*)nullptr, 0) {}