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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование сторонней библиотеки, от абстрактного к реальному 
V
    Опции темы
Sharkfire
Дата 1.1.2010, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Здравствуйте!
В коде необходимо использовать стороннюю библиотеку :
Код

#include "main.h"
#include "code\include\mgl\mgl.h"
//#include "class_lib.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
mglGraph * gr = new mglGraph();
delete gr;
}
//---------------------------------------------------------------------------


даёт ошибку:

Код

[BCC32 Error] main.cpp(17): E2352 Cannot create instance of abstract class 'mglGraph'
[BCC32 Error] main.cpp(17): E2353 Class 'mglGraph' is abstract because of 'mglGraph::Alpha(bool) = 0'


насколько я понимаю класс mglGraph мне нужно наследовать и создать на его базе свой?
и перезагрузить его конструктор?


PM MAIL ICQ   Вверх
zim22
Дата 1.1.2010, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Sharkfire @  1.1.2010,  14:09 Найти цитируемый пост)
насколько я понимаю класс mglGraph мне нужно наследовать и создать на его базе свой?

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


--------------------
PM MAIL   Вверх
Sharkfire
Дата 1.1.2010, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Создал отдельный H и CPP файл :

CPP
Код

myGraph::myGraph() : mglGraph()
{


}


H:
Код

#ifndef class_libH
#define class_libH
//---------------------------------------------------------------------------
#include "code\include\mgl\mgl.h"


class myGraph : public mglGraph{
myGraph();
}
//---------------------------------------------------------------------------

#endif


Ошибки:
Код

[BCC32 Error] class_lib.cpp(11): E2352 Cannot create instance of abstract class 'myGraph'
[BCC32 Error] class_lib.cpp(11): E2111 Type 'myGraph' may not be defined here
[BCC32 Error] class_lib.cpp(11): E2136 Constructor cannot have a return type specification


что я не так написал ?


PM MAIL ICQ   Вверх
kemiisto
Дата 1.1.2010, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 5
Всего: 160



Цитата(Sharkfire @  1.1.2010,  17:06 Найти цитируемый пост)
что я не так написал ?

А Вы Alpha(bool) переопределили?


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Sharkfire
Дата 1.1.2010, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



т.е. я должен "переопределение наследником функций-членов базового класса" ??

Код

class myGraph : public mglGraph{
myGraph();
void Alpha(bool A);
}


Ошибка : [BCC32 Error] class_lib.h(11): E2113 Virtual function 'myGraph::Alpha(bool)' conflicts with base class 'mglGraph'
PM MAIL ICQ   Вверх
kemiisto
Дата 1.1.2010, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 5
Всего: 160



Sharkfire, единственно, что могу посоветовать - учите С++. В базовом классе объявление выглядит так:
Код
virtual bool Alpha(bool enable)=0;

Обратите внимание на тип возвращаемого значения.

MathGL, видимо? На будующее - пишите сразу название сторонней библиотеки. smile 

Это сообщение отредактировал(а) kemiisto - 1.1.2010, 16:42


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Sharkfire
Дата 1.1.2010, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Да она самая!! Может уже у кого есть реализованный класс ? Спасибо


Почему он у меня тут ругается?

Код

myGraph::myGraph(void):mglGraph(void)
{


}


[BCC32 Error] class_lib.cpp(11): E2111 Type 'myGraph' may not be defined here
PM MAIL ICQ   Вверх
zim22
Дата 1.1.2010, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Sharkfire @  1.1.2010,  15:48 Найти цитируемый пост)
Почему он у меня тут ругается?


Цитата(Sharkfire @  1.1.2010,  15:48 Найти цитируемый пост)
myGraph::myGraph(void):mglGraph(void)


Цитата(kemiisto @  1.1.2010,  15:41 Найти цитируемый пост)
учите С++




--------------------
PM MAIL   Вверх
Sharkfire
Дата 2.1.2010, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Извините туплю не спал ...

Код

class myGraph : public mglGraph{
myGraph() : mglGraph() {};
bool Alpha(bool A);

};



правильно ли я переопределяю его методы Alpha ? (там ещё несколько таких же)

Код

myGraph::Alpha(bool A)
{
}

 


Это сообщение отредактировал(а) Sharkfire - 2.1.2010, 11:38
PM MAIL ICQ   Вверх
bsa
Дата 2.1.2010, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Sharkfire, нет. ты забыл тип возвращаемого значения во втором примере.
PM   Вверх
Sharkfire
Дата 2.1.2010, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо переопределил все методы какие надо было.


Код

[BCC32 Error] mgl_io.cpp(123): E2089 Identifier 'unRegister' cannot have a type qualifier

Ругается на :
Код

.....
typedef int ptrFunc (const char *, int,int,unsigned char**);
.....
class mglIO
{
......
     int unRegister(mgl_load* nptrLoad, ptrFunc* nptrSave);
.....
};


В хелпе:
Код

A qualifier is not allowed on the following: 

* typedef names 
.....
 

Это из-за того что библиотека писалась в другом компиляторе ? Или я не до понял чего то?

Это сообщение отредактировал(а) Sharkfire - 2.1.2010, 22:13
PM MAIL ICQ   Вверх
bsa
Дата 3.1.2010, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Sharkfire, проблема в том, что кто-то не знает языка, на котором пытается программировать. то что ты написал является ошибкой, так как typedef стоит перед декларацией функции. Ты, видимо, хотел определить тип указателя на функцию, это делается несколько иначе:
Код
typedef int (*ptrFunc)(const char *, int,int,unsigned char**);

PM   Вверх
Sharkfire
Дата 3.1.2010, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вообще то это кусок кода не мой! Это MGL при компилировании вот тут наткнулась.... ))) 
Спасибо)
PM MAIL ICQ   Вверх
azesmcar
Дата 3.1.2010, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



 smile 
Цитата(kemiisto @  1.1.2010,  16:41 Найти цитируемый пост)
единственно, что могу посоветовать - учите С++. 

Не ожидал от тебя такого совета smile 
PM   Вверх
kemiisto
Дата 3.1.2010, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 5
Всего: 160



Цитата(azesmcar @  3.1.2010,  14:22 Найти цитируемый пост)
Не ожидал от тебя такого совета smile 

Это называиццо "вырвано из контекста". А так, да, забавно. smile 


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

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

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

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

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


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

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


 




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


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

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