我有一些类定义了自己的共享指针ClassName::Ptr
,就像这样:
class ClassWithPointer {
public:
typedef std::shared_ptr<ClassWithPointer> Ptr;
public:
ClassWithPointer() {}
~ClassWithPointer() {}
};
我想创建一个模板类,使用定义了Ptr
的这些类,就像这样:
template <typename T>
class TemplateThatUsesPtr {
public:
void addPointer(T::Ptr pointer) { m_pointers.push_back(pointer);}
private:
std::vector<T::Ptr> m_pointers;
};
创建模板的实现时,如何检查模板参数是否具有Ptr
typedef?如果不是这样,我怎么能用#pragma error
打印一个友好的错误消息,而不是出现模板问题时出现所有错误?
我实际上使用的是Visual Studio,但可以使用常规解决方案。