С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/32: Рейтинг темы: голосов - 32, средняя оценка - 4.97
 Аватар для Vidok
38 / 38 / 4
Регистрация: 03.09.2011
Сообщений: 279

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

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

Студворк — интернет-сервис помощи студентам
Кто имел дело с графикой по книге Страуструпа "Принципы и практика использования С++" 2011 исправленное издание? Не могу вывести простое окно, все вроде делаю так как нужно.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.12.2011, 02:14
Ответы с готовыми решениями:

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

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

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

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

Цитата Сообщение от Vidok Посмотреть сообщение
Не могу вывести простое окно, все вроде делаю так как нужно.
а что собственно не так?
0
 Аватар для Vidok
38 / 38 / 4
Регистрация: 03.09.2011
Сообщений: 279
15.12.2011, 02:26  [ТС]
Я купил эту книгу и только не доволен что это курс) то есть не могу перейти на материал другой так как все повязано, а то что сначала все знаю. Он говорит вот что:
имеем код:
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а ошибка:
Code
1
2
3
4
5
6
7
8
9
10
11
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
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
15.12.2011, 15:53
Цитата Сообщение от Vidok Посмотреть сообщение
error C2084: функция "Graph_lib::Circle::Circle(Point,int )" уже имеет текст реализации
Уберите реализацию, попробуйте запустить. Попробуйте найти вторую реализацию и убрать лишних из двух реализаций.
0
 Аватар для Vidok
38 / 38 / 4
Регистрация: 03.09.2011
Сообщений: 279
15.12.2011, 16:40  [ТС]
Пробовал, не помогло, а вторую не нашел. Может не увидел, попробую еще поискать.
0
139 / 60 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1
15.12.2011, 19:47
Цитата Сообщение от Vidok Посмотреть сообщение
Кто имел дело с графикой по книге Страуструпа "Принципы и практика использования С++" 2011 исправленное издание? Не могу вывести простое окно, все вроде делаю так как нужно.
Ну как разобрался, у меня такая проблема. может подскажешь
0
 Аватар для Vidok
38 / 38 / 4
Регистрация: 03.09.2011
Сообщений: 279
18.12.2011, 17:00  [ТС]
Не разобрался, ничего не выходит. Если использовать только FLTK, то выводит, а его библиотеки не хотят работать.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
18.12.2011, 17:05
Цитата Сообщение от Vidok Посмотреть сообщение
Если использовать только FLTK, то выводит, а его библиотеки не хотят работать.
как это понимать? FLTK и есть библиотека
0
 Аватар для Vidok
38 / 38 / 4
Регистрация: 03.09.2011
Сообщений: 279
18.12.2011, 17:07  [ТС]
Если использовать только библиотеки FLTK, его библиотеки которые он приводит, не трогать
0
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 11
30.04.2012, 14:27
Vidok, в Graph.h прямо в структуре Circle определен конструктор, и он же в цппшке. Один лишний
0
XIII
16.09.2012, 13:48
здравствуйте, у меня таже проблема но другие ошибки и я понятия не имею как исправить это положение... Кто-нибудь может знает как исправить ?

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(voi d)const " (?draw_lines@Open_polyline@Graph_lib@@UB EXXZ)
1>tst.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall Graph_lib::Closed_polyline::draw_lines(v oid)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)cons t " (?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@@HHABUStri ng@@@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 ==========
AlexDex
14.11.2012, 01:47
Инструкция для 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]
1 / 1 / 0
Регистрация: 01.10.2014
Сообщений: 1
02.04.2015, 11:40
сделал по 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;
}
и всё заработало...
1
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
02.04.2015, 11:43
C++
1
return ff.is_open();
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.04.2015, 11:43
Помогаю со студенческими работами здесь

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

Перевод старых команд с книги Бьерна Страуструпа Принципы и практика использования С++
#include “std_lib_facilities.h” следует заменить #include &lt;iostream&gt; Но следует заметить что они отличаются скобками, то есть в...

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

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

Стоит ли читать "Программирование. Принципы и практика использования C++" от Страуструпа
Доброго времени суток. Сейчас лето, сессия позади, но не хочется проводить время впустую, а заняться более активным изучением C++. На...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 07.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru