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

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

Восстановить пароль Регистрация
 
UnknownPerson
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 6
21.10.2012, 19:36     Наследование классов #1
Здравствуйте, извините за глупый вопрос, но у меня проблема в следующем:
Имеется базовый класс
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.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2012, 19:36     Наследование классов
Посмотрите здесь:

Наследование классов C++
C++ Наследование классов.
Наследование классов C++
C++ Наследование классов
C++ Наследование Классов с++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6156 / 2885 / 281
Регистрация: 04.12.2011
Сообщений: 7,680
Записей в блоге: 3
21.10.2012, 20:20     Наследование классов #2
Цитата Сообщение от UnknownPerson Посмотреть сообщение
C++
1
void sum(a1, a2) {return a1 + a2;}
Прошу объяснить, почему здесь ошибка при передачи параметров функции sum, никак не могу понять :c.
void не возвращает значения, напишите int sum() {return a1 + a2;}
а параметры она сама найдёт.
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
Аналогично и второй параметр.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,829
Записей в блоге: 2
Завершенные тесты: 1
21.10.2012, 20:34     Наследование классов #4
C++
1
int sum() {return (a1 + a2);}
UnknownPerson
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 6
21.10.2012, 20:39  [ТС]     Наследование классов #5
Croessmah, хм, то есть при наследовании функциям наследуемого класса нельзя передавать переменные базового класса? Если возможно, прошу прояснить.
Артем Смирнов
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;
}
как то так
UnknownPerson
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 6
21.10.2012, 20:57  [ТС]     Наследование классов #7
Артем Смирнов, во, теперь понял. Спасибо за помощь!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2012, 21:03     Наследование классов
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6156 / 2885 / 281
Регистрация: 04.12.2011
Сообщений: 7,680
Записей в блоге: 3
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;
}
хотя можно и явно передать.
Yandex
Объявления
21.10.2012, 21:03     Наследование классов
Ответ Создать тему
Опции темы

Текущее время: 03:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru