Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
UnknownPerson
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 6
#1

Наследование классов - C++

21.10.2012, 19:36. Просмотров 544. Ответов 7
Метки нет (Все метки)

Здравствуйте, извините за глупый вопрос, но у меня проблема в следующем:
Имеется базовый класс
C++
1
2
3
4
5
class TestFirst{
public:
   int a1;
   int a2;
};
И его наследник
C++
1
2
3
4
class TestSecond : public TestFirst{
public:
   void sum(a1, a2) {return a1 + a2;}
};
Прошу объяснить, почему здесь ошибка при передачи параметров функции sum, никак не могу понять :c.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2012, 19:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Наследование классов (C++):

Заменить наследование классов на наследование интерфейсов - C++
#include <iostream> #include <assert.h> using namespace std; int people_on_base = 100; int vehicles_on_base = 100; double...

Наследование классов. Копирование производных классов - C++
Здравствуйте всем, у меня такой вопрос: написал код #include "stdafx.h" class A //Создаем класс А { int mA; ...

наследование классов - C++
Здравствуйте! У меня проблема о наследовании классов и определении собственно с каким из наследников идет процесс. Есть класс Ware,...

Наследование классов - C++
Добрый вечер. Не могли бы вы дать пособия, где подробно описывается наследование классов. И если у кого-нибудь есть готовый простенький...

Наследование классов - C++
Читал о наследовании классов. Там приводился такой пример: class Weapon { ... }; class MP5 : public Weapon { ...

Наследование классов! - C++
Помогите с задачей!немного закрутила Описать класс студент,который содержит инфу о студенте с помощью наследования,основать класс...

7
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6486 / 3130 / 307
Регистрация: 04.12.2011
Сообщений: 8,644
Записей в блоге: 5
21.10.2012, 20:20 #2
Цитата Сообщение от UnknownPerson Посмотреть сообщение
C++
1
void sum(a1, a2) {return a1 + a2;}
Прошу объяснить, почему здесь ошибка при передачи параметров функции sum, никак не могу понять :c.
void не возвращает значения, напишите int sum() {return a1 + a2;}
а параметры она сама найдёт.
1
UnknownPerson
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 6
21.10.2012, 20:30  [ТС] #3
IGPIGP, ох, ну да, точно, совсем забыл про int. Но вот такая ошибка осталась :
Error: member "TestFirst::a1" is not a type name
Аналогично и второй параметр.
0
Croessmah
Эксперт CЭксперт С++
13413 / 7564 / 855
Регистрация: 27.09.2012
Сообщений: 18,618
Записей в блоге: 3
Завершенные тесты: 1
21.10.2012, 20:34 #4
C++
1
int sum() {return (a1 + a2);}
0
UnknownPerson
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 6
21.10.2012, 20:39  [ТС] #5
Croessmah, хм, то есть при наследовании функциям наследуемого класса нельзя передавать переменные базового класса? Если возможно, прошу прояснить.
0
Артем Смирнов
6 / 6 / 1
Регистрация: 15.05.2012
Сообщений: 40
21.10.2012, 20:52 #6
Параметры функции и аргументы передаваемые ей-две разные вещи, ты при определении ф-ии должен указать параметры ф-ии и их тип, ты не указал тип.

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
using namespace std;
 
class TestFirst{
public:
   int a1;
   int a2;
};
 
class TestSecond : public TestFirst{
public:
   int sum(int k,int p) {return k + p;}
};
int main()
{
     TestSecond i;
     i.a1=10; i.a2=20;
 
    cout<< i.sum(i.a1,i.a2);
 
 
    return 0;
}
как то так
2
UnknownPerson
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 6
21.10.2012, 20:57  [ТС] #7
Артем Смирнов, во, теперь понял. Спасибо за помощь!
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6486 / 3130 / 307
Регистрация: 04.12.2011
Сообщений: 8,644
Записей в блоге: 5
21.10.2012, 21:03 #8
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
int sum() {return (a1 + a2);}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
using namespace std;
class TestFirst{
public:
   int a1;
   int a2;
};
 
class TestSecond : public TestFirst{
public:
   int sum() {return a1 + a2;}
};
int main()
{
    setlocale(0, "");
int sum;
TestSecond secondObj;
cout<<"Введите a1= ";
cin>>secondObj.a1;
cout<<endl; 
cout<<"Введите a2= ";   
cin>>secondObj.a2;  
    cout<<endl;
    cout<<" a1= "<<secondObj.a1;
    cout<<endl;
    cout<<" a2= "<<secondObj.a2;
    cout<<endl;
sum=secondObj.sum();
cout<<sum;
cout<<endl; 
system("pause");
return 0;
}
хотя можно и явно передать.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2012, 21:03
Привет! Вот еще темы с ответами:

Наследование классов - C++
смотрите, типа класс комп и ноут вроде все хорошо работает, но с табуляцией проблемы, собсна вот, как выводить ноут с парой пробелов,...

Наследование классов - C++
Собирал программу по частям, подскажите как исправить ошибки. #include &lt;iostream&gt; #include &lt;conio.h&gt; class Vehicle //...

наследование классов - C++
Помогите пожалуйста разобраться с задачей Создайте базу данных деканата. В ней фиксируются данные о 2 категориях студентах: студенты...

Наследование классов - C++
Доброго времени суток. Обращаюсь за помощью к Вам. Язык С++ стал изучать недавно и столкнулся вот с такой проблемой: Рассмотрим класс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
21.10.2012, 21:03
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru