我正忙着搞清楚接下来要做什么。基本上,该程序不能使用除指针变量(*)和动态分配的内存之外的任何内容(例如,“int * variable = new int”)。我必须在其他一切之上创建一个结构!
我在下面提供了一些代码。我所有的cin“>>”下面都有红线运算符和消息“,错误:无运算符”>>“匹配这些操作数”。代码的“one.score2”部分中的“one”下面还有一条红线(最后一行)和一条消息,上面写着“错误:表达式必须具有整数或未整合的枚举类型”。
如何让我的代码工作?
#include <iostream>
#include <string>
using namespace std;
// Define structures
struct student
{
string *name;
double *score, *score2, *average;
};
void main(void)
{
// Create our students
student one, two;
cout << "Enter the first student's name: ";
cin >> one.name;
cout << endl << "Enter " << one.name << "'s first exam: ";
cin >> one.score;
cout << endl << "Enter " << one.name << "'s second exam: ";
cin >> one.score2;
one.average = ((one.score + one.score2) / 2);
答案 0 :(得分:1)
您需要使用运算符*
取消引用指针。也就是说,
cout << "Enter the first student's name: ";
cin >> *one.name;
cout << endl << "Enter " << *one.name << "'s first exam: ";
cin >> *one.score;
cout << endl << "Enter " << *one.name << "'s second exam: ";
cin >> *one.score2;
*one.average = ((*one.score + *one.score2) / 2);
但是,您需要记住首先为这些指针分配内存。
答案 1 :(得分:1)
只需按以下方式更改结构
struct student
{
string name;
double score, score2, average;
};
根据你的例子,他们不需要成为指针,因为Joachim Pileborg也指向。
答案 2 :(得分:0)
得分等成员是指向实际数据的指针。例如。 one.score
是指向double的指针。当你想要切换到双重时,你应该至少取消指针:
cin >> *one.score
在您的main()示例中,您错过了分配数据实例。
one.score = new int;
cin >> *one.score
最好的方法是避免指针访问数据并使学生成为数据成员。