我已经在类message
中嵌套了一个模板,该类通常包含message
的子类,但如果我希望它本身包含message
,我会遇到冲突问题ctor重载。 (如果我能以某种方式让它忽略一种冲突的方法,但我不知道怎么做,那将是很好的。)所以我试着对messsage
容器进行专门化,但后来我得到了
非命名空间范围中的显式特化'类消息'
我已经研究过如何处理这类错误(例如here,here和here),但我无法弄清楚如何解决这些问题进入我的问题。
class message {
template<class T>
class sptrTemplate : public QSharedPointer<T>
{
public:
sptrTemplate() : QSharedPointer<T>() {}
sptrTemplate(T *msg_ptr) : QSharedPointer<T>(msg_ptr) {}
sptrTemplate(message *msg_ptr) : QSharedPointer<T>(static_cast<T *>(msg_ptr)) {}
};
};
请记住,T
通常是message
的子类。唯一的例外是当T
message
时。然后,第二和第三个ctor之间存在明显的冲突。但如果我尝试专攻
template <>
class sptrTemplate<message> : public QSharedPointer<message>
{
public:
sptr() : QSharedPointer<message>() {}
sptr(message *msg_ptr) : QSharedPointer<message>(msg_ptr) {}
};
然后我得到了编译器错误,我无法弄清楚如何处理它。