Странная ошибка преобразования сужения в заголовке PPP2graph.hC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Странная ошибка преобразования сужения в заголовке PPP2graph.h

Сообщение Anonymous »

Я недавно начал изучать графический интерфейс PPP2 от Stroustrup, однако после установки последней версии FLTK у меня возникли ошибки в заголовках, предоставленных Stroustrup, вот код, который я использовал.

Код: Выделить всё

#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;

Point tl{ 100,100 };
// our graphics facilities are in Graph_lib
// to become top left corner of window
Simple_window win{ tl,600,400,"Canvas" };     // make a simple window
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();

}
У меня возникла ошибка:
Ошибка C2397. Преобразование из 'Fl_Color' в 'int' требует сужающего преобразования Shoot_me_in_the_head C:\Users\abdua\ source\repos\Graph.h 159
Я ожидал, что этот код будет работать без проблем, поскольку он написан самим Страуструпом, я скопировал исходный код из его книги и два заголовка из его веб-сайт.
Я также исправил еще две ошибки в этом заголовке.
есть идеи, как устранить эту ошибку?
код заголовка немного длинный:

Код: Выделить всё

#ifndef GRAPH_GUARD
#define GRAPH_GUARD 1

#include "Point.h"
#include
//#include
//#include
#include "fltk.h"
#include "std_lib_facilities.h"

namespace Graph_lib {
// defense against ill-behaved Linux macros:
#undef major
#undef minor

struct Color {
enum Color_type {
red=FL_RED, blue=FL_BLUE, green=FL_GREEN,
yellow=FL_YELLOW, white=FL_WHITE, black=FL_BLACK,
magenta=FL_MAGENTA, cyan=FL_CYAN, dark_red=FL_DARK_RED,
dark_green=FL_DARK_GREEN, dark_yellow=FL_DARK_YELLOW, dark_blue=FL_DARK_BLUE,
dark_magenta=FL_DARK_MAGENTA, dark_cyan=FL_DARK_CYAN
};
enum Transparency { invisible = 0, visible=255 };

Color(Color_type cc) :c(Fl_Color(cc)), v(visible) { }
Color(Color_type cc, Transparency vv) :c(Fl_Color(cc)), v(vv) { }
Color(long int cc) :c(Fl_Color(cc)), v(visible) { }
Color(Transparency vv) :c(Fl_Color()), v(vv) { }

int as_int() const { return c; }
char visibility() const { return v; }
void set_visibility(Transparency vv) { v=vv; }
private:
unsigned char v;    // 0 or 1 for now
Fl_Color c;
};

struct Line_style {
enum Line_style_type {
solid=FL_SOLID,             // -------
dash=FL_DASH,               // - - - -
dot=FL_DOT,                 // .......
dashdot=FL_DASHDOT,         // - . - .
dashdotdot=FL_DASHDOTDOT,   // -..-..
};
Line_style(Line_style_type ss) :s(ss), w(0) { }
Line_style(Line_style_type lst, int ww) :s(lst), w(ww) { }
Line_style(int ss) :s(ss), w(0) { }

int width() const { return w; }
int style() const { return s; }
private:
int s;
int w;
};

class Font {
public:
enum Font_type {
helvetica=FL_HELVETICA,
helvetica_bold=FL_HELVETICA_BOLD,
helvetica_italic=FL_HELVETICA_ITALIC,
helvetica_bold_italic=FL_HELVETICA_BOLD_ITALIC,
courier=FL_COURIER,
courier_bold=FL_COURIER_BOLD,
courier_italic=FL_COURIER_ITALIC,
courier_bold_italic=FL_COURIER_BOLD_ITALIC,
times=FL_TIMES,
times_bold=FL_TIMES_BOLD,
times_italic=FL_TIMES_ITALIC,
times_bold_italic=FL_TIMES_BOLD_ITALIC,
symbol=FL_SYMBOL,
screen=FL_SCREEN,
screen_bold=FL_SCREEN_BOLD,
zapf_dingbats=FL_ZAPF_DINGBATS
};

Font(Font_type ff) :f(ff) { }
Font(int ff) :f(ff) { }

int as_int() const { return f; }
private:
int f;
};

template class Vector_ref {
vector v;
vector owned;
public:
Vector_ref() {}

Vector_ref(T* a, T* b=0, T* c=0, T* d=0)
{
if (a) push_back(a);
if (b) push_back(b);
if (c) push_back(c);
if (d) push_back(d);
}

~Vector_ref() { for (int i=0; i

Подробнее здесь: [url]https://stackoverflow.com/questions/78355706/strange-narrowing-conversion-error-in-ppp2-graph-h-header[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»