当我在 C++ 中的类中使用类时收到警告 [关闭]

Posted

技术标签:

【中文标题】当我在 C++ 中的类中使用类时收到警告 [关闭]【英文标题】:Getting a warning when I use a class within a class in C++ [closed] 【发布时间】:2021-10-31 00:13:04 【问题描述】:
#include <iostream>
#include <string>
#include <fstream>
#include <vector>

using namespace std;


class Course

  public:
  string name;
  int pars[];
  Course();

;

class Runs

  public:
  Course course; <- Error
  int scores[];
  Runs();

;

我正在尝试使用这些类从格式错误的文件中读取行。为什么我不能在一个类中使用一个类?

【问题讨论】:

为什么你认为你不能?编译器会给你什么错误?提示:仔细检查你是如何定义你的数组的。 您询问了编译器发出的与实例化类相关的 last 错误消息。前面的错误信息是int pars[];在类定义中无效,因此表示类Course的定义无效。您询问的错误消息是上述错误的结果。 C++ 中不允许使用没有维度的数组。随后的错误是main() 中的int scores[] 也无效。如果你想解决问题,你不能挑选错误消息。 int pars[]; 可能应该是vector&lt;int&gt; pars;。另外,int scores[]; 应该是vector&lt;int&gt; scores; 应将错误消息(以文本形式)复制到问题中,以便将来遇到相同问题的读者有更好的机会找到问题及其答案。 【参考方案1】:
int pars[];

这不是有效的 C++ 类成员声明。在标准 C++ 中,所有数组的大小必须在编译时定义为常量、固定大小。

您的编译器实现了一个非标准的 C++ 语言扩展,该扩展允许此类成员声明以便以特定方式使用它。但是,由于这种非标准 C++ 语言扩展工作的技术方式,您不能再将该类用作另一个类的成员。

您需要删除该类成员。也许使用std::vector 代替它,它基本上是一个可以在运行时更改其大小的数组。有关向量、它们如何工作以及如何使用它们的更完整讨论,请参阅 C++ 教科书。

【讨论】:

以上是关于当我在 C++ 中的类中使用类时收到警告 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C++:mwArray 作为 C++ 类中的变量

尝试在 Python 3 中使用 C++ 类时出错

C ++:如何访问另一个类中的类函数?

如何在 C++ 中的类中递归调用函数方法?

如何在 C++ 中的类中返回对象的字符串? [关闭]

作业问题 C++ 中的警告