C++ 使用整数数组C+时面临的问题+;

C++ 使用整数数组C+时面临的问题+;,c++,C++,我在第11行得到一个错误,但是如果我使用char-candidate\u-id[30]则没有错误。即使我写int-candidate\u-id,仍然没有错误: 错误是:11 6 C:\Users\SOUVIK\Desktop\gym 1.cpp[错误]与 'operator>>'(操作数类型为'std::istream'{aka'std::basic_istream'}和 “int[30]” #包括 使用名称空间std; 班级体育馆 { 公众: int候选者_id[30]; 字符候选人名称[3

我在第11行得到一个错误,但是如果我使用
char-candidate\u-id[30]
则没有错误。即使我写
int-candidate\u-id
,仍然没有错误:

错误是:11 6 C:\Users\SOUVIK\Desktop\gym 1.cpp[错误]与
'operator>>'(操作数类型为'std::istream'{aka'std::basic_istream'}和
“int[30]”
#包括
使用名称空间std;
班级体育馆
{
公众:
int候选者_id[30];
字符候选人名称[30];
浮动年龄;
无效接受()
{
cout>候选者id;
cout>候选人姓名;
候选人年龄;
}
无效显示()
{

你的代码中有两个概念,一个健身房和一个候选人,你似乎对如何处理这两个概念感到困惑。你编写了一个名为
gym
的类,但你添加到这个类中的字段都是关于候选人的(姓名、年龄、id等)。然后在
main
中,您已经声明了一组
gym
。您真的想要一个处理30个健身房的计划吗?还是您的计划是关于一个可以有30个候选健身房的计划

我将假设后者。在这种情况下,您需要声明一个名为
candidate
(而不是
gym
)的类,并将单个候选人所需的所有内容都放在该类中

您需要做的是为单个候选对象定义一个类,我们称之为候选对象

// A candidate for the gym
class Candidate
{
  int candidate_id;
  char candidate_name[30];
  float candidate_age;
  ...
};
然后在
main
中,可以声明gym变量,该变量是一个包含30个候选变量的数组

int main()
{
   Candidate gym[30];
   ...
}
这是基本的设计。如果您对此感到满意,那么您可以开始编写其余的代码。但是,不要将更改设计作为“解决”编译器错误的快速方法。如果设计是正确的,那么您必须在不更改设计的情况下解决编译器错误

当然,如果设计是错误的,那么你就改变它,但是首先考虑设计

这个设计的明显改进是增加一个健身班,然后(大概)这个健身班将包含30个候选人的数组

class Candidate
{
    ...
};

class Gym
{
    Candidate candidates[30];
    ...
};

int main()
{
    Gym gym;
    ...
}

如果你认为设计更有意义,那就去做吧。只要记住先设计,然后编码。

C++没有提供从
cin
读取数组的标准方法(除了
char[]
)。
candidate\u id
真的应该是数组吗?如果是,你需要手动读取所有元素。旁注:
obj[30]。accept()因为代码是一个越界访问,C++中的数组元素在0开始,因此最后一个有效索引是长度为1(在这种情况下为29)。@churill实际上,对于30个候选者,将有30个不同的id,这就是我将候选者id视为一个数组的原因。
gym
的每个实例都包含一个30个数组,这使我们总共有900个id(30个实例,每个30个id)您不能像那样直接填充数组,您需要一个带有索引的循环,每次都要执行
cin>>候选者id[i];