-1

试图在 c++11 中实现以下目标

template< class A >
    class B{
         std::shared_ptr< A > a_shared_ptr;
    };

B< int > b;

可能吗?

收到以下错误

../../src/threading/node.h:26:错误:ISO C++ 禁止声明没有类型的“shared_ptr”../../src/threading/node.h:26:错误:无效使用'::' ../../src/threading/node.h:26: 错误:预期的';' 在'<'之前 令牌

4

2 回答 2

6

是的,这是可能的。

作为std::shared_ptr新的 C++11 功能,您必须在编译器上启用 C++11 支持。在 GCC 下,选项是 :-std=c++0x-std=gnu++0x.

如果我不启用这些功能,我会得到与您完全相同的错误。

另一点是:不要忘记包含以下标题std::shared_ptr

#include <memory>
于 2013-08-17T17:51:34.033 回答
5

只需包含 std::shared_ptr 的标头,它编译得很好:

#include <memory>

template< class A >
class B{
    std::shared_ptr< A > a_shared_ptr;
};

int main()
{
    B< int > b;
    return 0;
}
于 2013-08-17T14:02:48.243 回答