Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/17: Рейтинг темы: голосов - 17, средняя оценка - 4.88
Vidok
37 / 37 / 4
Регистрация: 03.09.2011
Сообщений: 279
1

Принципы и практика использования С++(графика)

15.12.2011, 02:14. Просмотров 3054. Ответов 13
Метки нет (Все метки)

Кто имел дело с графикой по книге Страуструпа "Принципы и практика использования С++" 2011 исправленное издание? Не могу вывести простое окно, все вроде делаю так как нужно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2011, 02:14
Ответы с готовыми решениями:

Принципы и практика использования C++
До этого изучал C# не слишком глубоко но ООП освоил.(С некоторыми оговорками,...

Программирование. Принципы и практика использования C++
Стоит ли читать Бьерн Страуструп - Программирование. Принципы и практика...

Кто читал книгу Программирование.Принципы и практика использования c++
Народ всем привет кто читал книгу программирование принципы и практика...

Бьярне Страуструп Программирование: принципы и практика использования C++ кто читал
Нам посоветовали книгу( в универи посоветовал препод), Бьярне Страуструп...

Перевод старых команд с книги Бьерна Страуструпа Принципы и практика использования С++
#include “std_lib_facilities.h” следует заменить #include <iostream> Но...

13
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.12.2011, 02:17 2
Цитата Сообщение от Vidok Посмотреть сообщение
Кто имел дело с графикой по книге Страуструпа "Принципы и практика использования С++" 2011 исправленное издание?
дело не имел, но наслышан что все довольны

Цитата Сообщение от Vidok Посмотреть сообщение
Не могу вывести простое окно, все вроде делаю так как нужно.
а что собственно не так?
0
Vidok
37 / 37 / 4
Регистрация: 03.09.2011
Сообщений: 279
15.12.2011, 02:26  [ТС] 3
Я купил эту книгу и только не доволен что это курс) то есть не могу перейти на материал другой так как все повязано, а то что сначала все знаю. Он говорит вот что:
имеем код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "Simple_window.h" // get access to our window library
#include "Graph.h" // get access to our graphics library facilities
int main()
{
using namespace Graph_lib; // our graphics facilities are in Graph_lib
Point tl(100,100); // to become top left corner of window
Simple_window win(tl,600,400,"Canvas"); // make a simple window
Polygon poly; // make a shape (a polygon)
poly.add(Point(300,200)); // add a point
poly.add(Point(350,100)); // add another point
poly.add(Point(400,200)); // add a third point
poly.set_color(Color::red); // adjust properties of poly
win.attach (poly); // connect poly to the window
win.wait_for_button(); // give control to the display engine
}
Инсталлируем библиотеки FLTK.
В программе должны присутствовать заголовки: Point.h Window.h Simple_window.h Graph.h GUI.h
и исходные файлы: Window.cpp Graph.h GUI.h
Все это подключил, но куча варрингов и 1а ошибка:
Код
1>d:\my documents\visual studio 2010\projects\win32\win32\c++ libs\graph.h(45): warning C4305: инициализация: усечение из "Graph_lib::Color::Transparency" к "char"
1>d:\my documents\visual studio 2010\projects\win32\win32\c++ libs\graph.h(45): warning C4309: инициализация: усечение константного значения
1>d:\my documents\visual studio 2010\projects\win32\win32\c++ libs\graph.h(47): warning C4305: инициализация: усечение из "Graph_lib::Color::Transparency" к "char"
1>d:\my documents\visual studio 2010\projects\win32\win32\c++ libs\graph.h(47): warning C4309: инициализация: усечение константного значения
1>d:\my documents\visual studio 2010\projects\win32\win32\c++ libs\graph.cpp(64): warning C4018: <: несоответствие типов со знаком и без знака
1>d:\my documents\visual studio 2010\projects\win32\win32\c++ libs\graph.cpp(130): warning C4244: =: преобразование "double" в "int", возможна потеря данных
1>d:\my documents\visual studio 2010\projects\win32\win32\c++ libs\graph.cpp(131): warning C4244: =: преобразование "double" в "int", возможна потеря данных
1>d:\my documents\visual studio 2010\projects\win32\win32\c++ libs\graph.cpp(237): error C2084: функция "Graph_lib::Circle::Circle(Point,int)" уже имеет текст реализации
1>          d:\my documents\visual studio 2010\projects\win32\win32\c++ libs\graph.h(286): см. предыдущее определение "{ctor}"
1>d:\my documents\visual studio 2010\projects\win32\win32\c++ libs\graph.cpp(388): warning C4800: void *: принудительно задано логическое значение "true" или "false" (предупреждение о производительности)
1>d:\my documents\visual studio 2010\projects\win32\win32\c++ libs\graph.cpp(413): warning C4018: >=: несоответствие типов со знаком и без знака
Добавлено через 2 минуты
FLTK работает нормально, проверял.
0
Chelioss
181 / 181 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
15.12.2011, 15:53 4
Цитата Сообщение от Vidok Посмотреть сообщение
error C2084: функция "Graph_lib::Circle::Circle(Point,int)" уже имеет текст реализации
Уберите реализацию, попробуйте запустить. Попробуйте найти вторую реализацию и убрать лишних из двух реализаций.
0
Vidok
37 / 37 / 4
Регистрация: 03.09.2011
Сообщений: 279
15.12.2011, 16:40  [ТС] 5
Пробовал, не помогло, а вторую не нашел. Может не увидел, попробую еще поискать.
0
Sylar9
134 / 55 / 13
Регистрация: 04.09.2011
Сообщений: 1,952
Записей в блоге: 1
15.12.2011, 19:47 6
Цитата Сообщение от Vidok Посмотреть сообщение
Кто имел дело с графикой по книге Страуструпа "Принципы и практика использования С++" 2011 исправленное издание? Не могу вывести простое окно, все вроде делаю так как нужно.
Ну как разобрался, у меня такая проблема. может подскажешь
0
Vidok
37 / 37 / 4
Регистрация: 03.09.2011
Сообщений: 279
18.12.2011, 17:00  [ТС] 7
Не разобрался, ничего не выходит. Если использовать только FLTK, то выводит, а его библиотеки не хотят работать.
0
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.12.2011, 17:05 8
Цитата Сообщение от Vidok Посмотреть сообщение
Если использовать только FLTK, то выводит, а его библиотеки не хотят работать.
как это понимать? FLTK и есть библиотека
0
Vidok
37 / 37 / 4
Регистрация: 03.09.2011
Сообщений: 279
18.12.2011, 17:07  [ТС] 9
Если использовать только библиотеки FLTK, его библиотеки которые он приводит, не трогать
0
Marduk
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 11
30.04.2012, 14:27 10
Vidok, в Graph.h прямо в структуре Circle определен конструктор, и он же в цппшке. Один лишний
0
XIII
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 1
16.09.2012, 13:48 11
здравствуйте, у меня таже проблема но другие ошибки и я понятия не имею как исправить это положение... Кто-нибудь может знает как исправить ?

1>------ Build started: Project: tst, Configuration: Debug Win32 ------
1>Linking...
1>tst.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall Graph_lib::Window::draw(void)" (?draw@Window@Graph_lib@@MAEXXZ)
1>tst.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall Graph_lib::Shape::move(int,int)" (?move@Shape@Graph_lib@@UAEXHH@Z)
1>tst.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall Graph_lib::Shape::draw_lines(void)const " (?draw_lines@Shape@Graph_lib@@MBEXXZ)
1>tst.obj : error LNK2019: unresolved external symbol "protected: __thiscall Graph_lib::Shape::Shape(void)" (??0Shape@Graph_lib@@IAE@XZ) referenced in function "public: __thiscall Graph_lib::Open_polyline::Open_polyline(void)" (??0Open_polyline@Graph_lib@@QAE@XZ)
1>tst.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall Graph_lib::Open_polyline::draw_lines(void)const " (?draw_lines@Open_polyline@Graph_lib@@UBEXXZ)
1>tst.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall Graph_lib::Closed_polyline::draw_lines(void)const " (?draw_lines@Closed_polyline@Graph_lib@@UBEXXZ)
1>tst.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall Graph_lib::Polygon::draw_lines(void)const " (?draw_lines@Polygon@Graph_lib@@UBEXXZ)
1>tst.obj : error LNK2019: unresolved external symbol "public: bool __thiscall Simple_window::wait_for_button(void)" (?wait_for_button@Simple_window@@QAE_NXZ) referenced in function _main
1>tst.obj : error LNK2019: unresolved external symbol "public: void __thiscall Graph_lib::Polygon::add(struct Point)" (?add@Polygon@Graph_lib@@QAEXUPoint@@@Z) referenced in function _main
1>tst.obj : error LNK2019: unresolved external symbol "public: __thiscall Simple_window::Simple_window(struct Point,int,int,struct String const &)" (??0Simple_window@@QAE@UPoint@@HHABUString@@@Z) referenced in function _main
1>C:\Users\XIII\Documents\Visual Studio 2005\Projects\tst\Debug\tst.exe : fatal error LNK1120: 10 unresolved externals
1>Build log was saved at "file://c:\Users\XIII\Documents\Visual Studio 2005\Projects\tst\tst\Debug\BuildLog.htm"
1>tst - 11 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
0
AlexDex
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 1
14.11.2012, 01:47 12
Инструкция для Visual Studio 2010 (для других тоже пойдет). Решаем проблемы, начинающие с раздела Графика в книге Программирование. Принципы и практика использования C++ (Бьерн Страуструп).

Скачиваем fltk-1.3.1 (последняя версия на данный момент). Запускаем fltk.sln (fltk-1.3.1\ide\VisualC2010). Ждем, если требуется жмем ок. Как все готово жмем построение-->построить решение. Опять ждем, должно все получиться без ошибок. Копируем содержимое папки lib (fltk-1.3.1\lib) в lib (Microsoft Visual Studio 10.0\VC\lib). И полностью папку FL (fltk-1.3.1\FL) в include (Microsoft Visual Studio 10.0\VC\include). В эту же папку(include) скидываем скаченные с сайта Страуструпа GUI.h, Point.h, Simple_window.h, std_lib_facilities.h, Window.h и Graph.h. Последние два открываем редактором и изменяем у обоих #include "../std_lib_facilities.h" на #include "std_lib_facilities.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
#include <Simple_window.h>
#include <Graph.h> 
 
int main()
{
using namespace Graph_lib;
 
Point t1(100,100);
 
Simple_window win(t1, 600, 400, "Canvas");
 
Graph_lib::Polygon poly; //обратите внимание !
 
poly.add(Point(300,200));
poly.add(Point(350,100));
poly.add(Point(400,200));
 
poly.set_color(Color::red);
 
win.attach(poly);
win.wait_for_button();
 
return 0;
}
По порядку. Запускаем VS--> создать проект--> проект Win32(пустой проект). Добавить новый элемент--> Файл C++(.cpp). Копируем(или пишем) код выше.
Далее нажимаем проект--> свойства--> компоновщик--> ввод--> дополнительные зависимости справа жмем изменить и добавляем туда следующее:
fltkd.lib
wsock32.lib
comctl32.lib
fltkjpegd.lib
fltkimagesd.lib

применить-->ок.

Далее самое главное добавляем скачанные с сайта Страуструпа Graph.cpp, GUI.cpp, Simple_window.cpp, Window.cpp с помощью файлы исходного кода--> добавить--> существующий элемент. И последнее, что остается сделать в Graph.cpp найти и удалить след. код:

C++
1
2
3
4
5
Circle::Circle(Point p, int rr)    // center and radius
:r(rr)
{
add(Point(p.x-r,p.y-r));       // store top-left corner
}
После этого все должно заработать =)

результат
[img]http://s2.********************/uploads/images/2012/11/74af90016807a784c1a17a7eb62c878f.jpg[/img]
0
andreykapas
0 / 0 / 0
Регистрация: 01.10.2014
Сообщений: 1
02.04.2015, 11:40 13
сделал по AlexDex, но осталось: error c2440: return невозможно преобразовать "std::ifstream" в "bool"

Добавлено через 25 минут
хм... не знаю, на сколько это нормально, но в файле Graph.cpp я поменял
C++
1
2
3
4
5
6
bool can_open(const string& s)
// check if a file named s exists and can be opened for reading
{
    ifstream ff(s.c_str());
    return ff;
}
на
C++
1
2
3
4
5
6
bool can_open(const string& s)
// check if a file named s exists and can be opened for reading
{
    ifstream ff(s.c_str());
    return true;
}
и всё заработало...
0
Croessmah
++Ͻ
14630 / 8379 / 1582
Регистрация: 27.09.2012
Сообщений: 20,585
Записей в блоге: 2
Завершенные тесты: 1
02.04.2015, 11:43 14
C++
1
return ff.is_open();
1
02.04.2015, 11:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2015, 11:43

Кто читал Бьярне Страуструп Программирование: принципы и практика использования C++, исправленное издание
Люди кто читал Бьярне Страуструп Программирование: принципы и практика...

книгa "Программирование: принципы и практика использования C++, исправленное издание, Бьярне Страуструп;
а в этой книги &quot;Программирование: принципы и практика использования C++,...

Страуструп, "Принципы и практика использования С++": задача на нахождение моды
Здравствуйте ,решаю упражнения из книги &quot;Страуструп принципы и практика...


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

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

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