【问题标题】:c++ , error: 'shared_ptr' in namespace 'std' does not name a template type [closed]c++,错误:命名空间'std'中的'shared_ptr'没有命名模板类型[关闭]
【发布时间】:2017-12-08 05:43:18
【问题描述】:

我尝试使用 rhapsody 定义指向我的结构的智能指针,并且我已经包含了头文件“memory”。但是我得到了上面的错误

 typedef std::shared_ptr<my_structure> %s;

【问题讨论】:

  • % 在做什么?很确定没有编译器接受。
  • 你应该在以后的问题中包含一个完整的示例程序和错误。
  • 我的意思是shared_ptr,但它不起作用
  • %s 也不会修复它。你根本不能使用%。如果您发布更多代码会有所帮助,以便我们了解您正在尝试做什么而不是您想要如何做。
  • 我知道但是 shared_ptr 在 %s 之前,顺便说一句 %s 是变量的名称

标签: c++ boost g++ rhapsody


【解决方案1】:

我认为您的意思是 std::shared_ptr 而不是 std::shared

另外,% 在 C++ 中的类型名称中也是不合法的。


如果你的意图是创建一个类型别名,那么你应该这样做

using MyType_t = std::shared_ptr<my_structure>;

如果您的意图是创建std::shared_ptr&lt;my_structure&gt; 类型的变量,那么您应该这样做

std::shared_ptr<my_structure> ptr;

【讨论】:

  • 你说得对,我的意思是 std::shared_ptr
  • @sahbi.m 看看编辑后的答案
  • typedef std::shared_ptr&lt;my_structure&gt; MyType_t 等价于using MyType_t = std::shared_ptr&lt;my_structure&gt;
【解决方案2】:

不需要 % 访问说明符通常在 printf("%s",arg); 中带有 %;

最好的方法是 std::shared_ptr ptr;

【讨论】:

  • "%s" 是 format 说明符,而不是访问说明符。但它作为类型或变量的名称无效。无论如何,这并不能回答问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-08
  • 2014-09-21
  • 2014-12-21
  • 1970-01-01
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多