Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Вопросы начинающих программистов
Перезагрузить страницу Астральные классы выдает ошибку
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
radix radix вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.04.2006
По умолчанию Астральные классы выдает ошибку - 21.04.2006, 16:51

При компиляции неизменно выдается ошибка:
Цитата:
cannot instantiate abstract class
Вот код:

classes.h:
Код:
 class X {
           public:
             virtual void f() = 0;
             
           };


           class Y : public X {
     public:
      int h;

      void f(int r){h=r;}; //функцию переопределяю,  но все равно ругается, что класс абстрактный!
           };
test.cpp:
Код:
#include <iostream>
#include "classes.h"
using namespace std;

int main()
{
 Y c;   
}
Укажите, plz, где ошибка.
Ответить с цитированием
  (#2 (permalink)) Старый
Huan Huan вне форума
Member
 
Сообщений: 79
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.01.2006
По умолчанию 21.04.2006, 18:31

Попробуй
Код:
class Y : public X { 
         public: 
            int h; 
            virtual void f(int r){h=r;}; 
};
Ответить с цитированием
  (#3 (permalink)) Старый
radix radix вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.04.2006
По умолчанию 21.04.2006, 19:09

Спасибо. Так работает.
Но если добавить класс Z, производный от X:
Код:
class Z : public X {
     public:
      int M, N;

      void f(int a, int b){
                         M=a;
                         N=b;
      }; 
           };
и попытаться создать его объект:
Код:
Z h;
То тогда класс Z будет определяться как абстрактный. Есть какое-нибудь еще решение проблемы? Мне нужно, чтобы был базовый класс, к примеру Shape, с функцией рисования draw и 2 производных от него класса Rect и Circle, в которых эту функцию нужно соответсвующим образом переопределить. Как вот здесь поступить?
Ответить с цитированием
  (#4 (permalink)) Старый
michael michael вне форума
Member
 
Сообщений: 969
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.08.2003
По умолчанию 22.04.2006, 00:19

В функции f() во всех производных классах должны быть одинаковые аргументы.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выдает ошибку 1935 DjMixoff Windows 7 7 18.12.2011 14:54
USB модем выдает ошибку Molmark Сетевые подключения 1 22.09.2011 14:31
Выдает ошибку. Дид Любые вопросы от новичков 0 16.08.2011 18:44
Касперский выдает ошибку! Smailko Антивирусы 2 11.08.2011 00:57
выдает ошибку rouse Любые вопросы от новичков 24 30.05.2011 23:47
Выдает ошибку backspace и edit ilya2306 Вопросы начинающих программистов 0 18.03.2011 20:09
Виндовс при установке выдает ошибку. SERGGG Техническая поддержка 4 10.08.2010 00:41
Классы как найти ошибку Виталик 1 Delphi 2 29.01.2009 16:49
Проводник переодически выдает ошибку. novik__74 Техническая поддержка 3 02.05.2008 13:13
ри компиляции ошибку не выдает программа но при загрузке выдает imported_Maka C++ Builder 3 03.04.2007 12:51
При нажатии на кнопку Выдает ошибку CPU Ал-леша C++ Builder 1 01.06.2005 17:52
При выводе детерменанта выдает ошибку Frostbit Вопросы начинающих программистов 5 13.05.2004 22:01



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов