在类中声明结构

Posted

技术标签:

【中文标题】在类中声明结构【英文标题】:Declaring a struct in a class 【发布时间】:2016-05-18 09:59:19 【问题描述】:

我创建了一个名为Text 的类,它的一个成员是Pal_freqstd::vector,在class 中声明的struct

我收到了这些错误:

错误:“Pal_freq”没有命名类型 bool 标准 (const Pal_freq& p1, const Pal_freq& p2);

错误:“Pal_freq”没有命名类型 bool 标准 (const Pal_freq& p1, const Pal_freq& p2);

错误:“Pal_freq”未在此范围内声明 矢量consultar_taula_freq();

错误:模板参数 1 无效 矢量consultar_taula_freq();

代码如下:

class Text 
 public:

  struct Pal_freq 
  int freq;
  string pal;
  ;

  vector <Pal_freq> taula;
;

【问题讨论】:

Works here。您忘记#include &lt;string&gt;#include &lt;vector&gt;了吗? 您好 Pau,为了获得更好的帮助,您应该包含错误消息。 “不起作用”不是很能说明问题。 您的错误信息与您的代码不相关 您显然没有包括整个代码。我的猜测是,当您在 Text 之外使用它时,您没有限定名称 Text::Pal_freq @Pau,我没有说你应该包含 whole 类,请再次阅读我的评论!阅读有关如何创建 minimalcomplete 示例的链接。这不仅仅意味着在这里转储整段代码。阅读有关如何使用本网站的链接和指南,它将节省您的时间并节省我们的时间,因此您可以获得更好的答案(但在这种情况下,我已经在下面给了您答案......但请阅读如何使用这个网站正确!) 【参考方案1】:

错误消息不是来自您展示的一小段 ode(结构的定义),它们来自您没有向我们展示的其他代码片段(即在哪里你尝试使用嵌套结构)。

因为它是在Text 中声明的,所以当你在Text 的范围之外引用它时,你需要限定它的名称,所以你需要将它称为Text::Pal_freq,例如

bool criteri (const Text::Pal_freq& p1, const Text::Pal_freq& p2);

请阅读网站上的“如何提问”指南,并确保包含所有必要的代码,以便我们为您提供帮助。

【讨论】:

谢谢! bool criteri 在 Text 中,我应该使用 Text:: 吗? "bool criteri is inside Text" 不,不是。不在您向我们展示的代码中。这就是为什么我们无法帮助您,除非您提出更好的问题。如果您不显示criteri,您希望人们如何解释为什么您会收到criteri 的错误?!也许您需要在尝试使用它的成员函数之前移动Pal_freq 的声明。但是显示代码,或者我们只是在猜测,你的问题应该被关闭。

以上是关于在类中声明结构的主要内容,如果未能解决你的问题,请参考以下文章

在类中声明装饰器

在类中声明一个自动 lambda 函数

数组在类中的声明与创建

使用“接口”时在类中没有声明成员函数

在类中使用未声明的标识符

在类中声明第一个字段属性之前添加额外的行