|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.04.2008, 12:11 | #1 |
Форумчанин
Регистрация: 22.11.2007
Сообщений: 664
|
С++ Производные классы (Ошибка)
Имеется Базовый класс:
int LEN=80; class Admin_edin {public: Admin_edin(); private: char name_Adm; int num_grag; float s_adm; }; Admin_edin::Admin_edin{name_Adm[LEN], num_grag=s_adm=0;} Производный class Selo : public Admin_edin { public: Selo (float); Selo (float,char*, int, float); float l_raj; } Selo ::Selo(l_raj, sname_Adm,[LEN], num_grag,s_adm):Admin_edin(sname_Ad m[LEN], snum_grag=ss_adm=0){l_ra=0;} Выдается сообщение, что Selo ::Selo .. не в памяти. Вроде все делаю по книге (учусь заочно, но сдвинуться с этого места не могу, подскажите где ошибка, пожалуйста
Неприятности приходят и уходят, а жизнь продолжается!
|
14.04.2008, 13:33 | #2 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Вынужден огорчить - везде! Там места живого нет, что это за книжка такая? В печку её.
В первом (!) приближении можно сделать так: Код:
|
14.04.2008, 13:57 | #3 |
Форумчанин
Регистрация: 22.11.2007
Сообщений: 664
|
Большое спасибо!
Неприятности приходят и уходят, а жизнь продолжается!
|
22.04.2008, 13:06 | #4 |
Форумчанин
Регистрация: 22.11.2007
Сообщений: 664
|
После всех исправлений вроде заработало, но если в main ставлю
Selo sel[3]; появляется ошибка компоновщика, что идет ссылка на несуществующий объект в Selo в файле .obj //------------------------------------------------------------------------- #pragma hdrstop #pragma argsused #include <iostream.h> #include <conio.h> //------- Базовый класс - Административная единица // const int LEN=70; //Длина строки символов class Admin_edin //Имя класса { protected: /Защищенные члены класса, доступные при наследовании char name_admin [LEN]; //Наименование административной единицы int num_man; //Кол-во жителей float s_admin; // Площадь float plotnost; //Плотность населения public: Admin_edin (); //Конструкторv void GetAdmin(); //Ввод данных с клавиатуры void PutAdmin()const; //Вывод данных float Delenie(); //Определение плотности населения }; //---------------- Методы класса Admin_edin :: Admin_edin (){name_admin[LEN],num_man=s_admin=0;}void Admin_edin :: GetAdmin() //Ввод данных с клавиатуры { cout << "\n Vvedite naimenovanie:"; cin >> name_admin; //Ввод наименования населенноно пункта cout << "\n Vvedite num_grajdan:"; cin >> num_man; //Ввод кол-ва жителей // Проверка на положительное значение, присваивание 0, если введено // отрицательное значение и предложение повторного ввода. while(num_man<0) { num_man=0; cout << "\n Vvedеno <0, Povtorite vvod:"; cout << "\n "; cin >> num_man; } cout <<"\n Vvedite ploschad:"; cin >> s_admin; //Ввод площади while(s_admin<0) { s_admin=0; cout << "\n Vvedеno <0, Povtorite vvod S:"; cout << "\n "; cin >> s_admin; } } //---------------------------------------------------------------- // Вывод на экран void Admin_edin :: PutAdmin()const { cout << endl << "\n Naimenovanie:" << name_admin << "\t Num_grajdan:" <<num_man << "\t Ploschad:" << s_admin; } //Определение плотности населения float Admin_edin :: Delenie() { plotnost = num_man/s_admin; return plotnost; //Возврат результата } //----------------------- Производный класс - СЕЛО --------------------- class Selo : public Admin_edin Admin_edin { public: Selo (); //Конструктор без параметров Selo (float, char[LEN], int, float);//Конструктор с 4-мя параметрами void Sravnenie(Selo); //Метод сравнения сел по площади и кол-ву void PutSelo()const; //Вывод на экран данных класса void GetSelo(); private: float l_raj; //Расстояние до районного центра }; //---------------- Методы класса Selo :: Selo(float f_l_raj, char f_sname_admin[LEN], int f_num_grag, float f_s_adm) { num_man = f_num_grag; s_admin = f_s_adm; l_raj = f_l_raj; strncpy(name_admin, f_sname_admin, LEN); } //------------------------------------------------------------------- void Selo :: Sravnenie(Selo s) {int n1=num_man; int n2=s.num_man; if(n1>n2) cout<<"\n Kolichestvo grajdan v " << name_admin << " bolshe na " << (n1-n2); else cout<<"\n Kolichestvo grajdan v "<< s.name_admin << " bolshe na " << (n2-n1); float s1=s_admin; float s2=s.s_admin; if(s1>s2) cout<<"\n Ploschad " << name_admin << " bolshe na " << (s1-s2); else cout<<"\n Ploschad "<< s.name_admin << " bolshe na " << (s2-s1); } //------------------------------------------------------------------- //Ввод данных для обьекта Село void Selo :: GetSelo() { Admin_edin::GetAdmin(); //Вызов функции из из класса Admin_edin cout <<"\n Vvedite Rastojanie do rajcentra:" ; cin >> l_raj; while(l_raj<0) { l_raj=0; cout << "\n Vvedеno <0, Povtorite vvod :"; cout << "\n "; cin >> l_raj; } } //------------------------------------------------------------------- //Вывод данных для обьекта Село void Selo :: PutSelo()const { Admin_edin::PutAdmin(); cout <<"\n Rasstojanie do rajcentra:" << l_raj ; } // Функция тестирующая работу Производного класса - Село int main() { Selo s1(10.2, "Oskol", 302, 100.05); s1.PutSelo(); cout<<"\n "; s1.GetSelo(); s1.PutSelo(); Selo sel[3]; for (int i=0,n=1; i<3; i++,n++) { cout<<"\n Vvod dannih dlja Sel"<<n; sel[i].GetSelo(); } for (int i=0; i<3; i++) { sel[i].PutSelo(); } cout<<"\n Press any key to end!"; getch(); return 0; }
Неприятности приходят и уходят, а жизнь продолжается!
Последний раз редактировалось Sweta; 22.04.2008 в 14:15. |
22.04.2008, 13:52 | #5 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
А где определения конструкторов для Admin_edin и Selo? Вижу только декларации, самих функций нет. Оформляйте листинги тэгом CODE (# в окне редактирования)
|
22.04.2008, 14:16 | #6 |
Форумчанин
Регистрация: 22.11.2007
Сообщений: 664
|
По моим представлениям выделила зеленым.
Еще одно, когда я строки с обьявлением массива и обращениям к функциям комментирую, т.е /*.....*/, то программа работает.
Неприятности приходят и уходят, а жизнь продолжается!
Последний раз редактировалось Sweta; 22.04.2008 в 14:27. |
22.04.2008, 14:25 | #7 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
|
22.04.2008, 14:31 | #8 |
Форумчанин
Регистрация: 22.11.2007
Сообщений: 664
|
Да не загоняла в одну строчку, это из-за спешки получилось, когда выделяла цветом. А Selo ведь должен быть пустым или я ошибаюсь?
Неприятности приходят и уходят, а жизнь продолжается!
|
22.04.2008, 14:39 | #9 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
|
23.04.2008, 12:58 | #10 |
Форумчанин
Регистрация: 22.11.2007
Сообщений: 664
|
Все получилось. Большое спасибо!
Неприятности приходят и уходят, а жизнь продолжается!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Классы в php | Romanbl4 | PHP | 3 | 08.08.2008 07:09 |
Классы | Старовъръ | Общие вопросы Delphi | 4 | 26.06.2008 17:00 |
базовые и производные классы (В чём моя ошибка) | umnix | Общие вопросы C/C++ | 5 | 01.12.2007 17:26 |
Классы | Mickle | Общие вопросы Delphi | 1 | 07.05.2007 12:16 |