Member 13800699 Ответов: 1

Помогите мне решить эту ошибку, и пожалуйста, дайте мне знать о моей ошибке.


он продолжает выдавать ошибку, что ссылка на имя & roll неоднозначна.

Что я уже пробовал:

#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;

class Student
{
protected:
	int roll,age;
	char name[20];
public:
	void get()
	{
		cout<<"Enter name of the student";
		cin>>name;
		cout<<"Enter roll no. of "<<name;
		cin>>roll;
		cout<<"Enter age of "<<name;
		cin>>age;
	}
};

class Subject: public Student
{
protected:
	int p,c,m,h,e;
public:
	get_marks()
	{
		cout<<"Enter marks of Physics";
		cin>>p;
		cout<<"Enter marks of Chemistry";
		cin>>c;
		cout<<"Enter marks of Maths";
		cin>>m;
		cout<<"Enter marks of Hindi";
		cin>>h;
		cout<<"Enter marks of English";
		cin>>e;
	}
};

class Sports: public Student
{
protected:
	int phy_edu;
public:
	get_sports()
	{
		cout<<"Enter marks of Physical Education";
		cin>>phy_edu;
	}
};

class Result: public Subject,public Sports
{
protected:
	int total;
	float avg;
	char grade[5];
public:
	calculate()
	{
		total = p+c+m+h+e;
		avg = (total/6);

		if(avg >= 90)
			strcpy(grade,"A+");
		else if(avg >= 80)
			strcpy(grade,"A");
		else if(avg >= 70)
			strcpy(grade,"A-");
		else if(avg >= 60)
			strcpy(grade,"B+");
		else if(avg >= 50)
			strcpy(grade,"B");
		else if(avg >= 40)
			strcpy(grade,"B-");
		else if(avg < 40)
			strcpy(grade,"Fail");
	}

	void display()
	{
		cout<<name <<"\t"<<roll <<"\t"<< total <<"\t"<< avg <<"\t"<< grade;
	}
};

int main()
{
	Subject s;
	s.get();
	Sports s1;
	s1.get();
	cout<<"Name \t Roll No. \t Total Marks \t Average Marks \t Grade";
	Result r;
	r.display();
	getch();
}

1 Ответов

Рейтинг:
12

Rick York

Вы объявили хрестоматийный пример того, что известно как образец наследования алмазов. Результат является производным от предмета и спорта, и оба они являются производными от студента. Компилятор не знает, к каким членам базового класса обращаться в этой ситуации. Вот довольно хороший учебник о том, что это такое и как это исправить : Виртуальное наследование в C++ и решение алмазной задачи - Cprogramming.com[^].


Member 13800699

спасибо

Rick York

Кстати, считай, что тебе повезло. Обычно я не имею ничего общего с вопросами, в которых есть текстовая речь.