当我在 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<int> pars;
。另外,int scores[];
应该是vector<int> scores;
。
应将错误消息(以文本形式)复制到问题中,以便将来遇到相同问题的读者有更好的机会找到问题及其答案。
【参考方案1】:
int pars[];
这不是有效的 C++ 类成员声明。在标准 C++ 中,所有数组的大小必须在编译时定义为常量、固定大小。
您的编译器实现了一个非标准的 C++ 语言扩展,该扩展允许此类成员声明以便以特定方式使用它。但是,由于这种非标准 C++ 语言扩展工作的技术方式,您不能再将该类用作另一个类的成员。
您需要删除该类成员。也许使用std::vector
代替它,它基本上是一个可以在运行时更改其大小的数组。有关向量、它们如何工作以及如何使用它们的更完整讨论,请参阅 C++ 教科书。
【讨论】:
以上是关于当我在 C++ 中的类中使用类时收到警告 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章