Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2009, 18:00   #1
Fataller
Пользователь
 
Регистрация: 04.03.2009
Сообщений: 62
По умолчанию Проблема с компоновкой в С++

В общем, дело происходит так. Есть класс TElement, предком которого является класс Txy. В описании класса Txy определены стандартный конструктор и деструктор(описание класса находится в файле "_Types.h". Затем в файле "_Element.h" был описан
Код:
класс TElement:

//ЭЛЕМЕНТ КОНСТРУКЦИИ
#include "_Types.h"

class TElement: public Txy
{
    public:
    TElement *pNext; //следующий элемент
    Txy *pComponent; //компонент списка
    TElement *pOwner; //владелец компонента списка
    TElement(); //инициализация
    virtual ~TElement(){}; //удаление списка
    void Load(FILE *f); //загрузка значений из файла
    virtual void Scale(); //маштабирование
    virtual void SetOrigin(){}; //установить начало отсчета
    virtual void Draw(){}; //рисование
    TElement* NewElement( Txy *pC, Txy *pN, char Id[80]); //добавить новый элемент в список
    void SetOwner(); //определить владельца
    void SetOwnerComponent(TElement *pE); //определить владельца для компонента
    void SetOwnerForNext(); //определить владельца для след. элемента
    virtual int IsItElement(){return 1;};
};
и затем в файле "Elements.cpp" был следующий код:
Код:
//ЭЛЕМЕНТ
#include <string.h>
#include "_Element.h"
//Инициализация
TElement::TElement()
{
        pNext=NULL;
        pComponent=NULL;
        pOwner=NULL;
}
//загрузка значений из файла
void TElement::Load(FILE *f)
{
    strcpy(Name, "Save");
  //  ReadName(f);
    Txy::Load(f);
}
//маштабирование
void TElement::Scale()
{
    static int n=0;
    if (n==0) n=1; //не маштабировать старшего владельца
    else Txy::Scale();
    if (pNext!=NULL) //маштабировать следующий элемент
    {
        if (pOwner!=NULL) pNext->k=pNext->k*pOwner->k;
        pNext->Scale();
    }
    if (pComponent!=NULL) //маштабировать компонент
    {
        pComponent->k=pComponent->k*k;
        pComponent->Scale();
    }
}
int main()
{
    return 0;
}
При "Build and run" были выведены ошибки:
\Kurs1\ELEMENT.o:ELEMENT.CPP.text +0x9e)||undefined reference to `Txy::Load(_iobuf*)'|
\Kurs1\ELEMENT.o:ELEMENT.CPP.text +0xc6)||undefined reference to `Txy::Scale()'|
\Kurs1\ELEMENT.o:ELEMENT.CPP.text $_ZN3TxyC2Ev[Txy::Txy()]+0x8)||undefined reference to `vtable for Txy'|
\Kurs1\ELEMENT.o:ELEMENT.CPP.text $_ZN3TxyD2Ev[Txy::~Txy()]+0xb)||undefined reference to `vtable for Txy'|
||=== Build finished: 4 errors, 0 warnings ===|
Насколько я понимаю дело в виртуальных функциях, но не могу понять в чем именно. Подскажите пожалуйста.

Последний раз редактировалось Манжосов Денис :); 06.10.2009 в 18:08.
Fataller вне форума Ответить с цитированием
Старый 06.10.2009, 20:21   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
В описании класса Txy определены стандартный конструктор и деструктор
так наверное в классе Txy надо определить и функции Txy::Scale() и Txy::Load(FILE *f), раз вы их вызываете
counter вне форума Ответить с цитированием
Старый 06.10.2009, 23:18   #3
Fataller
Пользователь
 
Регистрация: 04.03.2009
Сообщений: 62
По умолчанию

Они определены, с ними все в порядке, проверял. Так что проблема не в этом помогите, проект заступорился (
Fataller вне форума Ответить с цитированием
Старый 06.10.2009, 23:41   #4
lennon
Заблокирован
 
Регистрация: 18.11.2007
Сообщений: 254
По умолчанию

ты ELEMENT.CPP добавил в проект?
lennon вне форума Ответить с цитированием
Старый 06.10.2009, 23:45   #5
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

проект надо смотреть
counter вне форума Ответить с цитированием
Старый 07.10.2009, 19:38   #6
Fataller
Пользователь
 
Регистрация: 04.03.2009
Сообщений: 62
По умолчанию

Вот файлы. Работаю в Code Blocks. Help me plz )
Вложения
Тип файла: rar Kurs1.rar (4.9 Кб, 6 просмотров)
Fataller вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37