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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.90
Vidok
37 / 37 / 2
Регистрация: 03.09.2011
Сообщений: 279
#1

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

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

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

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

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

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

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

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

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

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

Цитата Сообщение от Vidok Посмотреть сообщение
Не могу вывести простое окно, все вроде делаю так как нужно.
а что собственно не так?
0
Vidok
37 / 37 / 2
Регистрация: 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
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
15.12.2011, 15:53 #4
Цитата Сообщение от Vidok Посмотреть сообщение
error C2084: функция "Graph_lib::Circle::Circle(Point,int)" уже имеет текст реализации
Уберите реализацию, попробуйте запустить. Попробуйте найти вторую реализацию и убрать лишних из двух реализаций.
0
Vidok
37 / 37 / 2
Регистрация: 03.09.2011
Сообщений: 279
15.12.2011, 16:40  [ТС] #5
Пробовал, не помогло, а вторую не нашел. Может не увидел, попробую еще поискать.
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,931
Записей в блоге: 1
15.12.2011, 19:47 #6
Цитата Сообщение от Vidok Посмотреть сообщение
Кто имел дело с графикой по книге Страуструпа "Принципы и практика использования С++" 2011 исправленное издание? Не могу вывести простое окно, все вроде делаю так как нужно.
Ну как разобрался, у меня такая проблема. может подскажешь
0
Vidok
37 / 37 / 2
Регистрация: 03.09.2011
Сообщений: 279
18.12.2011, 17:00  [ТС] #7
Не разобрался, ничего не выходит. Если использовать только FLTK, то выводит, а его библиотеки не хотят работать.
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.12.2011, 17:05 #8
Цитата Сообщение от Vidok Посмотреть сообщение
Если использовать только FLTK, то выводит, а его библиотеки не хотят работать.
как это понимать? FLTK и есть библиотека
0
Vidok
37 / 37 / 2
Регистрация: 03.09.2011
Сообщений: 279
18.12.2011, 17:07  [ТС] #9
Если использовать только библиотеки FLTK, его библиотеки которые он приводит, не трогать
0
marduk
Сообщений: n/a
30.04.2012, 14:27 #10
Vidok, в Graph.h прямо в структуре Circle определен конструктор, и он же в цппшке. Один лишний
XIII
Сообщений: n/a
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 ==========
AlexDex
Сообщений: n/a
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]
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
Эксперт CЭксперт С++
13416 / 7569 / 855
Регистрация: 27.09.2012
Сообщений: 18,632
Записей в блоге: 3
Завершенные тесты: 1
02.04.2015, 11:43 #14
C++
1
return ff.is_open();
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2015, 11:43
Привет! Вот еще темы с ответами:

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

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

Задача из книги "Програмирование - принципы и практика использования C++" - C++
Кто читал ету книгу, помогите разобратся с задачей с 12 главы. Никак не могу скомпилировать простую программу. Вот ее код: #include...

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


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

Или воспользуйтесь поиском по форуму:
14
Yandex
Объявления
02.04.2015, 11:43
Ответ Создать тему
Опции темы

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