Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наследование. Иерархия классов 
V
    Опции темы
oshilan
Дата 20.4.2010, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 21.3.2010

Репутация: нет
Всего: 0



Задача: Программа считывает данные с файла (во вложении), заносит их в односвязный список, сразу же выводит таблицу с данными на экран.
Проблема: Таблица пуста.
Класс OutDB - наследник класса InDB. У обоих классов все методы и поля - public. В чём проблема - не пойму. Если засунуть всё в один класс - всё работает.
Код
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<iomanip.h>
FILE *f;

class InDB
{ public:
    char name[5];
    char brand[10];
    int count;
    InDB *top;
    InDB *next;
    void ReadF();
} indb;

class OutDB : InDB
{ public:
    void WriteC();
} outdb;

void InDB::ReadF()
{ InDB *db=top;
  f=fopen("in.txt","r");
  fscanf(f,"%s\n",db->name);
  fscanf(f,"%s\n",db->brand);
  fscanf(f,"%u\n\n",db->count);
  db->next=NULL;
  while(!feof(f))
  { db->next=new InDB;
    db=db->next;
    fscanf(f,"%s\n",db->name);
    fscanf(f,"%s\n",db->brand);
    fscanf(f,"%u\n\n",&(db->count));
    db->next=NULL;
  }
  fclose(f);
};

void OutDB::WriteC()
{ InDB *db=top;
  cout<<"############################\n";
  cout<<"# Name #   Brand   # Count #\n";
  cout<<"############################\n";
  while(db)
  { cout<<"#"<<setw(5)<<db->name<<" #"<<setw(10)<<db->brand<<" #"<<setw(6)<<db->count<<" #"<<endl;
    db=db->next;
  }
  cout<<"############################\n\n";
};

void main()
{ clrscr();
  indb.ReadF();
  outdb.WriteC();
  getch();
}


Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  in.txt 0,10 Kb
PM MAIL   Вверх
bsa
Дата 20.4.2010, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



oshilan, у тебя indb и outdb - разные сущности. Т.е. indb загружает и хранит данные, а таблицу ты составляешь из пустого outdb. В твоем случае нужно делать так:
Код
void main()
{
  clrscr();
  OutDB outdb;
  outdb.ReadF();
  outdb.WriteC();
  getch();
}
Соответственно, глобальные определения объектов indb и outdb не нужны.
PM   Вверх
oshilan
Дата 20.4.2010, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 21.3.2010

Репутация: нет
Всего: 0



2 bsa: Спасибо! Всё работает так. +1 символически (постов мало)
PM MAIL   Вверх
xvr
Дата 21.4.2010, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(oshilan @  20.4.2010,  21:48 Найти цитируемый пост)
+1 символически
Сделал фактически  smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.