typedef 到模板类型

发布于 2024-10-30 22:52:45 字数 166 浏览 0 评论 0原文

以下有什么问题吗?

typedef boost::shared_ptr SharedPtr;

GCC 给出以下错误:

ISO C++ 禁止声明无类型的“shared_ptr”

What's wrong with the following?

typedef boost::shared_ptr SharedPtr;

GCC gives the following error:

ISO C++ forbids declaration of ‘shared_ptr’ with no type

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

九八野马 2024-11-06 22:52:45

C++(还)没有“模板类型定义”,您可以像这样“重命名”模板。这是 C++0x 中添加的一个功能,其中这样的“typedef”称为“别名模板”。

目前最简单的解决方法是使用带有嵌套 typedef 的类模板:

template <typename T>
struct SharedPtr
{
    typedef std::shared_ptr<T> Type;
};

// usage
typename SharedPtr<int>::Type sp;

C++ doesn't (yet) have "template typedefs" where you can "rename" a template like this. This is a feature being added in C++0x, where such a "typedef" is called an "alias template."

The simplest workaround that works today is to use a class template with a nested typedef:

template <typename T>
struct SharedPtr
{
    typedef std::shared_ptr<T> Type;
};

// usage
typename SharedPtr<int>::Type sp;
国际总奸 2024-11-06 22:52:45

C++11:

template<typename T>
using SharedPtr = boost::shared_ptr<T>:

或者您可以使用 C++11 内置的shared_ptr:

template<typename T>
using SP = std::shared_ptr<T>;

C++11:

template<typename T>
using SharedPtr = boost::shared_ptr<T>:

Or you could use shared_ptr built into C++11:

template<typename T>
using SP = std::shared_ptr<T>;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文