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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2010, 20:40   #1
ТриСемёрки
Пользователь
 
Регистрация: 12.05.2010
Сообщений: 61
По умолчанию Ошибки при линковке.

Мой код:

Figure.h
//---------------------------------------------------------------------------

#ifndef FIGURE_H
#define FIGURE_H
#include <stdlib.h>
#define MaxSize 553
//---------------------------------------------------------------------------

class Figure { // Абстрактный класс
public:
Figure();
virtual ~Figure() { // Деструктор. ОБЯЗАТЕЛЬНО должен быть виртуальным у полиморфных
} // (использующих виртуальные функции) классов

virtual void setLine();
virtual void Draw() const = 0; //Обьявлена чистая виртуальная функция

void getX() { // Получение координаты x
x=random(MaxSize);
};

void getY() { // Получение координаты y
y=random(MaxSize);
};

protected:
int x;
int y;
TPoint p[10];
};


class Line: public Figure {
public:
Line() { // Конструктор
for (int i=0; i<2; ++i) {
p[i].x=-1; // По умолчанию коордтнатам присваивается значение -1
p[i].y=-1;
}
};
void setLine() {
for (int i=0; i<2; ++i) {
Line::getX();
p[i].x=x;
Line::getY();
p[i].y=y;
}
};
void Draw() const; // Рисование фигуры
protected:
int x;
int y;
TPoint p[2];
};
//---------------------------------------------------------------------------
#endif



Figure.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Figure.h"
#include "Unit1.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// class Line
//---------------------------------------------------------------------------

void Line::Draw() const {
Form1->PaintBox1->Canvas->Polyline(p,2);
}


Unit1.cpp

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{

}
//---------------------------------------------------------------------------

#include <stdio.h>
#include <iostream.h>
#define MaxSize 553

void __fastcall TForm1::Button1Click(TObject *Sender) {
Line O=Line();
O.Draw();
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------

В Unit.h Figure.h добавлен.


Ошибки при линковке:
[Linker Error] Unresolved external 'Figure::setLine()' referenced from F:\НОВАЯ ПАПКА\UNIT1.OBJ
[Linker Error] Unresolved external 'Figure::Figure()' referenced from F:\НОВАЯ ПАПКА\UNIT1.OBJ

Что необходимо подключить для разрешений ошибок?
ТриСемёрки вне форума Ответить с цитированием
Старый 02.09.2010, 20:45   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Ну так... Конструктор и setLine вы объявили. А где же их определения??
P.S. Что-то мне там еще кажется, но пока вы не оформите все это дело в тег CODE (значок #) я не буду себе глаза ломать чтоб понять, кажется мне это или не кажется.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же

Последний раз редактировалось Гром; 02.09.2010 в 20:47.
Гром вне форума Ответить с цитированием
Старый 02.09.2010, 21:00   #3
ТриСемёрки
Пользователь
 
Регистрация: 12.05.2010
Сообщений: 61
По умолчанию

Мой код:

Figure.h
//---------------------------------------------------------------------------
Код:
#ifndef FIGURE_H
#define FIGURE_H
#include <stdlib.h>
#define MaxSize 553
//---------------------------------------------------------------------------

class Figure { // Абстрактный класс
public:
Figure();
virtual ~Figure() { // Деструктор. ОБЯЗАТЕЛЬНО должен быть виртуальным у полиморфных 
} // (использующих виртуальные функции) классов

virtual void setLine();
virtual void Draw() const = 0; //Обьявлена чистая виртуальная функция

void getX() { // Получение координаты x
x=random(MaxSize);
};

void getY() { // Получение координаты y
y=random(MaxSize);
};

protected:
int x;
int y;
TPoint p[10];
};


class Line: public Figure {
public:
Line() { // Конструктор
for (int i=0; i<2; ++i) {
p[i].x=-1; // По умолчанию коордтнатам присваивается значение -1
p[i].y=-1;
}
};
void setLine() {
for (int i=0; i<2; ++i) {
Line::getX();
p[i].x=x;
Line::getY();
p[i].y=y;
}
};
void Draw() const; // Рисование фигуры
protected:
int x;
int y;
TPoint p[2];
};
//---------------------------------------------------------------------------
#endif
Figure.cpp
//---------------------------------------------------------------------------
Код:
#include <vcl.h>
#pragma hdrstop

#include "Figure.h"
#include "Unit1.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// class Line
//---------------------------------------------------------------------------

void Line::Draw() const {
Form1->PaintBox1->Canvas->Polyline(p,2);
}
Unit1.cpp

Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{

}
//---------------------------------------------------------------------------

#include <stdio.h>
#include <iostream.h>
#define MaxSize 553

void __fastcall TForm1::Button1Click(TObject *Sender) {
Line O=Line();
O.Draw();
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
В Unit.h Figure.h добавлен.


Ошибки при линковке:
[Linker Error] Unresolved external 'Figure::setLine()' referenced from F:\НОВАЯ ПАПКА\UNIT1.OBJ
[Linker Error] Unresolved external 'Figure::Figure()' referenced from F:\НОВАЯ ПАПКА\UNIT1.OBJ

Что необходимо подключить для разрешений ошибок?
ТриСемёрки вне форума Ответить с цитированием
Старый 02.09.2010, 21:31   #4
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

В Figure.cpp добавить конструктор и setLine()
Carbon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибки при инжекте joker Win Api 5 21.08.2012 11:04
Ошибки при построении yugik Visual C++ 7 27.08.2010 17:58
Ошибки при сохранении Alex19789 Microsoft Office Excel 6 16.10.2009 12:39
MS Visual C++, ошибка при линковке... Пепел Феникса Visual C++ 2 08.09.2009 16:20
Ошибка при линковке Лотос Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 25 22.02.2009 20:24