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

Абстрактный класс - C++

Восстановить пароль Регистрация
 
xam max
3 / 3 / 0
Регистрация: 27.09.2009
Сообщений: 199
09.01.2012, 14:26     Абстрактный класс #1
вот у меня есть классы:
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
class CCommand
{
public:
    virtual ~CCommand() {};
    virtual void execute(CShape *selection)=0;
    virtual void unexecute()=0;
    virtual CCommand* clone()=0;
};
 
class CMoveCommand:public CCommand
{
public:
    CMoveCommand(int _dx,int _dy);
    void execute(CShape* _selection,Panel^ panel);
    void unexecute(Panel^ panel);
    CCommand* clone();
    ~CMoveCommand(){};
private:
    CShape *selection;
    int dx,dy;
};
class CShape
{
public:
    virtual void move(int _dx,int _dy)=0;
    virtual void draw(Panel^ panel)=0;
};
и есть функция
C++
1
2
3
4
5
CCommand* CMoveCommand::clone()
{
    CCommand* move=new CMoveCommand(dx,dy);
    return move;
}
почему компилятор ругается на функцию как будто я пытаюсь создать обьект абстрактного класса?
и как это предотвратить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2012, 14:26     Абстрактный класс
Посмотрите здесь:

Абстрактный класс C++
абстрактный класс C++
Абстрактный класс C++
C++ Абстрактный класс
C++ Абстрактный класс
C++ Абстрактный класс
Абстрактный класс C++
Абстрактный класс/Класс интерфейс C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
09.01.2012, 14:35     Абстрактный класс #2
xam max, у вас в классе CMoveCommand метод execute имеет сигнатуру void execute(CShape* _selection,Panel^ panel);, тогда как в базовом классе CCommand он определён как virtual void execute(CShape *selection)=0; Как видно, эти методы имеют разную сигнатуру. Таким образом, метод базового класса так и остаётся чистым виртуальным в производном, а значит, производный класс также является абстрактным.
Yandex
Объявления
09.01.2012, 14:35     Абстрактный класс
Ответ Создать тему
Опции темы

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