以下是什么问题?
typedef boost::shared_ptr SharedPtr;
GCC给出以下错误:
ISO C ++禁止声明'shared_ptr'没有类型
答案 0 :(得分:6)
C ++还没有“模板类型定义”,你可以在这里“重命名”这样的模板。这是在C ++ 0x中添加的一个功能,其中这样的“typedef”被称为“别名模板”。
今天最简单的解决方法是使用带有嵌套typedef的类模板:
template <typename T>
struct SharedPtr
{
typedef std::shared_ptr<T> Type;
};
// usage
typename SharedPtr<int>::Type sp;
答案 1 :(得分:0)
C ++ 11:
template<typename T>
using SharedPtr = boost::shared_ptr<T>:
或者您可以使用C ++ 11内置的shared_ptr:
template<typename T>
using SP = std::shared_ptr<T>;