Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
larev01
0 / 0 / 0
Регистрация: 11.07.2010
Сообщений: 39
#1

Сборка проекта в Borland Turbo C++ 3.0 - C++

09.07.2011, 11:30. Просмотров 1783. Ответов 7
Метки нет (Все метки)

Здравствуйте. Помогите пожалуйста разобраться в чем проблема. Создаю в turbo c++ (надо обязательно в нём из-за поганой консольной графики, будь она не ладна) проект и закидываю в него следующие файлы:

"shapes.h"
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
28
29
30
#ifndef __SHAPES_H
#define __SHAPES_H
 
#include <graphics.h>
 
class Shape {
        short x;
        short y;
    public:
        Shape(short, short);
        void setX(short);
        void setY(short);
        short getX() const;
        short getY() const;
        short isMovable(short, short);
        virtual void move(short, short) = 0;
        virtual void draw() const = 0;
};
 
class Circle : public Shape {
        short radius;
    public:
        Circle(short _x, short _y, short _r);
        void setRadius(short);
        short getRadius() const;
        void draw() const;
        void move(short, short);
};
 
#endif
"shapes.cpp"
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
28
29
30
31
32
33
34
35
36
37
38
#include <graphics.h>
#include "shapes.h"
 
Shape::Shape(short set_x, short set_y) : x(set_x), y(set_y) {}
 
void Shape::setX(short set_x) { x = set_x; }
void Shape::setY(short set_y) { y = set_y; }
short Shape::getX() const { return x; }
short Shape::getY() const { return y; }
 
short Shape::isMovable(short check_x, short check_y)
{
    if(check_x>=640 || check_x<0)
        return 0;
    else if(check_y>=480 || check_y<0)
        return 0;
 
    return 1;
}
 
 
Circle::Circle(short set_x, short set_y, short set_radius) :
        Shape(set_x, set_y), radius(set_radius) {}
 
void Circle::setRadius(short set_radius) { radius = set_radius; }
short Circle::getRadius() const { return radius; }
 
void Circle::draw() const { circle(getX(), getY(), radius); }
 
void Circle::move(short delta_x, short delta_y)
{
    if(!isMovable(getX()+delta_x, getY()+delta_y))
        return;
    setX(getX()+delta_x);
    setY(getY()+delta_y);
    cleardevice();
    draw();
}
"main.cpp"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "shapes.h"
#include <conio.h>
 
int main()
{
    int driver, mode;
    driver = DETECT;
    Circle object(320, 240, 10);
 
    initgraph(&driver, &mode, "");
    object.draw();
    getch();
    closegraph();
 
    return 0;
}
Пытаюсь собрать проект - линковщик кричит и ругается. По-отдельности файлы компилируются нормально. Если методы класса определяю не в shapes.cpp, а в shapes.h, то все хорошо. Где ошибка, как бороться? Подскажите пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2011, 11:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сборка проекта в Borland Turbo C++ 3.0 (C++):

Классы в Turbo C/Borland C - C++
Класс для объекта-вектора, что задается координатами концов. Создать операции сложения и отнимания. Можете написать как должен...

Borland Turbo C++ не видит библиотеки - C++
Открываю через DosBox, отказывается видеть библиотеки. Эта сборка: http://rutracker.org/forum/viewtopic.php?t=3112885 В Options -...

Бегущая строка Borland Turbo C++ - C++
Доброе время суток, подскажите, пожалуйста, код для организации бегущий строки. Текст, допустим, будет в строке задан. Нужно чтобы...

Помогите найти Borland Turbo C + Debugger - C++
Добрый день! Помогите плз. с поиском Borland Turbo C 3.0 и debugger''a к нему (Turbo Debugger 3). Перерыл весь инет. Может есть у кого? ...

сравнительные характеристики систем программирования Turbo Pascal и Borland C - C++
сравнительные характеристики систем программирования Turbo Pascal и Borland С??????

Создание многофайлового проекта в Borland 5.02 - C++
Кто знает как создать многофайловый проект в среде Borland 5.02

7
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
09.07.2011, 12:21 #2
Я так предполагаю - файл Shapes.cpp просто не включен в проект. Потому его содержимое не компилируется и не линкуется.
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
09.07.2011, 12:30 #3
ошибки хотя бы покажи.
В целом по коду:
1) grafics будет дважды включён в shapes.cpp. В .h файле вроде как он вобще не нужен, по крайней мере я не вижу где он в нём используется.
2) если у тебя есть виртуальные методы, то неплохо бы и деструктор иметь виртуальный. По умолчанию генерится невиртуальный, если только ты не наследуешься от класса в котором он виртуальный
3) дело твоё конечно, но я бы на твоём месте структуру point завёл
4) сдаётся мне, что isMovable bool должна возвращать
рекомендую перенести свой прожект в vs 2008 и накатать всё на win32api, делов то на пять минут, тебе только WM_PAINT надо обрабатывать и никаких зато проблем с компилером

Добавлено через 4 минуты
если исключить graphics то у меня всё откомпилировалось в gcc-g++, так что это твой борланд понтуется
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.07.2011, 12:42 #4
pito211,
Цитата Сообщение от pito211 Посмотреть сообщение
1) grafics будет дважды включён в shapes.cpp. В .h файле вроде как он вобще не нужен, по крайней мере я не вижу где он в нём используется
не будет, это стандартная приблуда
Borland Turbo C++ 3.0
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
09.07.2011, 12:46 #5
ну может и не будет, суть в том что не надо пихать что попало без явной необходимости
0
larev01
0 / 0 / 0
Регистрация: 11.07.2010
Сообщений: 39
09.07.2011, 13:14  [ТС] #6
Цитата Сообщение от Roof Посмотреть сообщение
Я так предполагаю - файл Shapes.cpp просто не включен в проект. Потому его содержимое не компилируется и не линкуется.
Включен. Объектный файл создается. А вот линковщик плеваться начинает.

Цитата Сообщение от pito211 Посмотреть сообщение
ошибки хотя бы покажи.
Linker error: Undefined symbol Circle::draw() const in module main.cpp
Linker error: Undefined symbol Circle::Circle(short, short, short) in module main.cpp

Если конструктор включаю в заголовочный файл, то:
Linker error: Undefined symbol Circle::draw() const in module main.cpp
Linker error: Undefined symbol Circle::move(short, short) in module main.cpp

Цитата Сообщение от pito211 Посмотреть сообщение
1) grafics будет дважды включён в shapes.cpp. В .h файле вроде как он вобще не нужен, по крайней мере я не вижу где он в нём используется.
Не будет, #ifndef'ом поймается. Хотя действительно он не нужен (остался висеть с тех пор, как класс со всеми методами был определен в заголовочном файле).

Цитата Сообщение от pito211 Посмотреть сообщение
если у тебя есть виртуальные методы, то неплохо бы и деструктор иметь виртуальный. По умолчанию генерится невиртуальный, если только ты не наследуешься от класса в котором он виртуальный
С этим я позже разберусь. Сейчас задача собрать проект.

Цитата Сообщение от pito211 Посмотреть сообщение
3) дело твоё конечно, но я бы на твоём месте структуру point завёл
Какой в ней смысл?

Цитата Сообщение от pito211 Посмотреть сообщение
4) сдаётся мне, что isMovable bool должна возвращать
Так и есть. Тока борландовский турбос, как оказалось, понятия не имеет о типе bool.

Цитата Сообщение от pito211 Посмотреть сообщение
рекомендую перенести свой прожект в vs 2008 и накатать всё на win32api, делов то на пять минут, тебе только WM_PAINT надо обрабатывать и никаких зато проблем с компилером
Мне проще в заголовочный файл определения методов вернуть (делов секунды на 3-4 ), но хочется разобраться с той ситуацией, которая сложилась.

Цитата Сообщение от pito211 Посмотреть сообщение
если исключить graphics то у меня всё откомпилировалось в gcc-g++, так что это твой борланд понтуется
В том-то и дело. Ошибок не вижу. Не понимаю че ему надо.
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
09.07.2011, 14:54 #7
larev01, shapes.h тоже чтоль в проект добавлен? Убери.
2
larev01
0 / 0 / 0
Регистрация: 11.07.2010
Сообщений: 39
09.07.2011, 15:05  [ТС] #8
Цитата Сообщение от grizlik78 Посмотреть сообщение
larev01, shapes.h тоже чтоль в проект добавлен? Убери.
Блин, а ведь всё так просто... grizlik78, спасибо огромное! Теперь работает!
0
09.07.2011, 15:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2011, 15:05
Привет! Вот еще темы с ответами:

Перенос проекта BORLAND C++ в MS VISUAL STUDIO - C++
Доброй ночи Есть программа (проект) написанная в BORLAND C++ Подскажите пожалуйста как перенести этот проект в MS VISUAL STUDIO для...

Сборка проекта - C++
Ребята, у меня проблема. Написал консольное приложение. Всё отлично. &quot;Собрал&quot; проект. Захожу в папку Release. Там два файла (.exe и...

Сборка проекта Microsip - C++
Существует такой проект, Open Source SIP клиент написанный на С++ тут В нем используется библиотека тут Я хочу собрать проект и...

Сборка POCO проекта - C++
Запускаю файл build_vs100.cmd и батник создает кучу файлов с расширением lib. Копирую их в C:\Program Files (x86)\Microsoft Visual...


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

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

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