Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
1

Ошибка в одновременном наследовании класса и интерфейса

23.04.2014, 16:59. Показов 2202. Ответов 17
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
interface my
{
 void metod();
};
//---------------------------------------------------------------------------
class TMyFrame : public TFrame, my
{
...
пишет
E2246 my is not abstract public single inheritance class hierarchy with no data
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2014, 16:59
Ответы с готовыми решениями:

Ошибка при наследовании интерфейса в библиотеке классов
В решении два проекта. Один - библиотека классов, другой консольный, который с этой библиотекой...

Ошибка при наследовании класса
Среда Visual Basic STUDIO’2010 Professional Наследование. Как устранить ошибку. Сделано...

Ошибка при наследовании класса
Всем доброго времени суток, пытаюсь отнаследовать класс, вот такой код я смастерил: #ifndef...

Ошибка при наследовании от класса Qtimer
В общем, вот у меня есть код: #include <QCoreApplication> #include <windows.h> #include...

17
Эксперт С++
8364 / 6101 / 611
Регистрация: 10.12.2010
Сообщений: 28,457
Записей в блоге: 31
23.04.2014, 17:24 2
В С++ нет интерфейсов.
0
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
23.04.2014, 17:59  [ТС] 3
Цитата Сообщение от Avazart Посмотреть сообщение
В С++ нет интерфейсов.
А это тогда что такое?
Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '"

И так не хочет

C++
1
2
3
4
5
6
7
8
class my
{
        virtual void myfunc();
};
//---------------------------------------------------------------------------
class TLineTypeAdd : public TFrame, public my
{
...
Мне надо сделать что-то на подобии интерфейса
0
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
23.04.2014, 18:23 4
в билдере вроде нескольких public
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31087 / 20311 / 7909
Регистрация: 22.10.2011
Сообщений: 35,217
Записей в блоге: 6
23.04.2014, 18:33 5
Лучший ответ Сообщение было отмечено klynxe как решение

Решение

klynxe,
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
class my
{
    virtual void myfunc() = 0;
};
 
// ---------------------------------------------------------------------------
class TLineTypeAdd : public TFrame, public my
{
    //
    virtual void myfunc()
    {
        //
    }
 
public:
    inline __fastcall virtual TLineTypeAdd(Classes::TComponent* AOwner)
        : TFrame(Owner)
    {
    }
};
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TLineTypeAdd *p = new TLineTypeAdd(this);
    // ...
}
, угу?
0
Эксперт С++
8364 / 6101 / 611
Регистрация: 10.12.2010
Сообщений: 28,457
Записей в блоге: 31
23.04.2014, 18:59 6
Вероятно interface для потрирование примочек из Delphi

Добавлено через 9 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
class my
{
   void metod();
};
//---------------------------------------------------------------------------
class TMyFrame : public TFrame
{
       my impl_;
   public:
       // ....
       void metod(){ impl_.metod(); };
};
0
1114 / 785 / 100
Регистрация: 01.02.2011
Сообщений: 1,847
Записей в блоге: 1
23.04.2014, 19:00 7
Avazart интерфейс - это как бы структура, содержащая только абстрактные методы
0
Эксперт С++
8364 / 6101 / 611
Регистрация: 10.12.2010
Сообщений: 28,457
Записей в блоге: 31
23.04.2014, 19:00 8
Цитата Сообщение от kzru_hunter Посмотреть сообщение
Avazart интерфейс - это как бы структура, содержащая только абстрактные методы
Еще раз - в С++ нет интерфейсов.

Есть абстранктные классы, но это совсем другая штука.
И множественное наследование не всегда хорошее решения.
0
1114 / 785 / 100
Регистрация: 01.02.2011
Сообщений: 1,847
Записей в блоге: 1
23.04.2014, 19:02 9
Цитата Сообщение от Avazart Посмотреть сообщение
Еще раз - в С++ нет интерфейсов.
в objbase.h:
C++
1
#define interface struct
при создании COM-библиотеки используются интерфейсы
0
Эксперт С++
8364 / 6101 / 611
Регистрация: 10.12.2010
Сообщений: 28,457
Записей в блоге: 31
23.04.2014, 19:05 10
kzru_hunter, http://ru.wikipedia.org/wiki/%... 29#C.2B.2B
0
1114 / 785 / 100
Регистрация: 01.02.2011
Сообщений: 1,847
Записей в блоге: 1
23.04.2014, 19:11 11
Avazart отличие интерфейса от абстрактного класса в том, что в интерфейсе все методы должны быть абстрактными
0
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
23.04.2014, 22:13  [ТС] 12
Я так и не понял, интерфейсы в C++ есть или нет?
1
Эксперт С++
8364 / 6101 / 611
Регистрация: 10.12.2010
Сообщений: 28,457
Записей в блоге: 31
23.04.2014, 22:50 13
Цитата Сообщение от klynxe Посмотреть сообщение
Я так и не понял, интерфейсы в C++ есть или нет?
Да нет интерфейсов, или ты тоже читать не умеешь ? Они не нужны в С++, ибо тех же целей добиваются обычным наследованием от абстрактного класса (или грубо говоря "класса-интерфейса").

В случаях множественного наследования следует быть осторожным ибо есть нюансы.
0
1114 / 785 / 100
Регистрация: 01.02.2011
Сообщений: 1,847
Записей в блоге: 1
24.04.2014, 06:15 14
Цитата Сообщение от Avazart Посмотреть сообщение
Да нет интерфейсов
Что значит "нет интерфейсов"? Если бы их не было, мы бы не могли их использовать в C++.
В C++ просто нет интейфейса, как специального типа данных. Сама концепция интерфейсов в C++ есть.
0
Эксперт С++
8364 / 6101 / 611
Регистрация: 10.12.2010
Сообщений: 28,457
Записей в блоге: 31
24.04.2014, 14:38 15
Цитата Сообщение от kzru_hunter Посмотреть сообщение
В C++ просто нет интейфейса, как специального типа данных.
Дошло таки ...
0
1114 / 785 / 100
Регистрация: 01.02.2011
Сообщений: 1,847
Записей в блоге: 1
24.04.2014, 19:16 16
Цитата Сообщение от Avazart Посмотреть сообщение
Дошло таки ...
Я это и так знал. Почему сам об этом не написал, а продолжал дезинформировать ТС тем, что в "С++ нет вообще интерфейсов"?
0
Эксперт С++
8364 / 6101 / 611
Регистрация: 10.12.2010
Сообщений: 28,457
Записей в блоге: 31
24.04.2014, 19:22 17
По тому что их нет в С++, а то что идеи понятия не всегда воплощаются в языке "непосредственно" слишком очевидная вещь что бы об этом говорить.
0
1114 / 785 / 100
Регистрация: 01.02.2011
Сообщений: 1,847
Записей в блоге: 1
24.04.2014, 19:50 18
Короче, ладно, пусть каждый будет при своей точке зрения
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2014, 19:50

Помощь в написании контрольных, курсовых и дипломных работ здесь.

При наследовании класса QSlider происходит ошибка
Всем привет. Вопрос уже мучает второй день. Погуглил. Все предложеные варианты не сработали....

Ошибка: undefined reference to при наследовании класса
Здравствуйте форумчане. Пытаюсь наследовать класс MyService от OAuthService и получаю множество...

Ошибка Web.config при наследовании класса MembershipProvider
Ситуация следующая. Унаследовал я класс MembershipProvider. Переопределил функции. Теперь есть свой...

Различная реализация метода при наследовании интерфейса
Создаю класс который наследую от интерфейса. В классе есть private массив с параметрами и допустим...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.