以下哪项出错?typedef到模板类型
typedef boost::shared_ptr SharedPtr;
GCC提供了以下错误:
ISO C++ forbids declaration of ‘shared_ptr’ with no type
以下哪项出错?typedef到模板类型
typedef boost::shared_ptr SharedPtr;
GCC提供了以下错误:
ISO C++ forbids declaration of ‘shared_ptr’ with no type
C++不(还)有 “模板类型定义”,您可以在 “重命名” 这样的一个模板。这是一个在C++ 0x中添加的功能,其中这样的“typedef”被称为“别名模板”。
今天的工作,最简单的解决方法是使用一个类模板与嵌套的typedef:
template <typename T>
struct SharedPtr
{
typedef std::shared_ptr<T> Type;
};
// usage
typename SharedPtr<int>::Type sp;
你可以给出理由,为什么它在当前C++中无效?它似乎有点令人讨厌,并且它暗示了明显的行为。 – 2011-04-06 04:11:53
@Matt:这不仅仅是C++ 98/C++ 03中的语言功能。我同意这很烦人:C++有许多烦恼,幸好其中许多已经在C++ 0x中纠正过。 – 2011-04-06 04:20:12
原因只是shared_ptr不是类型,而是类型的**模板**。另一方面,'shared_ptr
什么是你想达到什么目的? – 2011-04-06 01:32:32
我的错误,typename不应该在那里,但现有的答案都不会受到这个影响。 – 2011-04-06 04:11:17
该代码无效?我从来不知道! +1 – Mehrdad 2011-04-06 04:13:29