Мой компилятор выдает сообщение об ошибке, что к элементу данных структуры нельзя получить доступ, потому что структурная переменная не относится к классу - PullRequest
0 голосов
/ 06 марта 2019

Это простой фрагмент кода, предназначенный для использования отдельной структуры для сбора оценок P, C, M и использования функции avg (), чтобы передать ей структурную переменную и найти среднюю оценку каждого учащегося. Я использую массив из 5 структурных переменных. Вот код ниже

#include <iostream>
using namespace std;
struct report
{
    public:
    int p,c,m;
};
double avg (report ob)
{
    double mean = ((ob.p) + (ob.c) + (ob.m))/3;
    return mean;
}
    int main()
    {
        report ob[5];
        int i;
        double mean;
        for(i=0;i<5;i++)
        {
            cout<<"Student num"<<" "<<i<<endl;
            cout<<"Enter P , C , M Marks"<<endl;
            cin>>ob.p;
            cin>>ob.c;
            cin>>ob.m;
        }
        for(i=0;i<5;i++)
        {
            cout<<"Average marks of Student number"<<" "<<i<<endl;
            mean = avg(ob[i]);
            cout<<mean<<endl;
        }
    }

И вывод компилятора:

Error : ||=== Build file: "no target" in "no project" (compiler: unknown) ===|
C:\Users\us\Documents\Progs\ReportStructure.cpp||In function 'int main()':|
C:\Users\us\Documents\Progs\ReportStructure.cpp|22|error: 
> request for member 'p' in 'ob', which is of non-class type 'report
> [5]'|

C:\Users\us\Documents\Progs\ReportStructure.cpp|23|error: 

> request for member 'c' in 'ob', which is of non-class type 'report
> [5]'|

C:\Users\us\Documents\Progs\ReportStructure.cpp|24|error: `

> request for member 'm' in 'ob', which is of non-class type 'report
> [5]'|

`
||=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

Ответы [ 2 ]

1 голос
/ 06 марта 2019
for(i=0;i<5;i++)
        {
            cout<<"Student num"<<" "<<i<<endl;
            cout<<"Enter P , C , M Marks"<<endl;
            cin>>ob[i].p;
            cin>>ob[i].c;
            cin>>ob[i].m;
        }

Попробуйте получить доступ к элементу ih следующим образом.

0 голосов
/ 06 марта 2019

Я могу ошибаться, но так как это структура, а не объявление класса, я думаю:

struct report
{
    public:
    int p,c,m;
};

должно быть:

struct report
{
    int p,c,m;
};

Тогда ob будетмассив структуры, я думаю, вам нужно указать индекс, чтобы получить доступ к конкретному полю:

cin>>ob.p;
cin>>ob.c;
cin>>ob.m;

Вероятно, должно быть:

cin>>ob[i].p;
cin>>ob[i].c;
cin>>ob[i].m;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...