【发布时间】:2020-10-23 23:50:12
【问题描述】:
你好堆栈溢出的成员!我希望曾经去过我所在的地方的人可以为我指明正确的方向。
我目前正在学习 C++ 并进行第 12 章中的图形练习,但我似乎无法获得应该可以工作的代码。 几天来,我一直在尝试让任何代码正常工作,并且已经克服了一些大问题,但是由于我只学习 C++,所以我目前处于我的专业知识的极限,并且已经用尽了以前在各种论坛上提出的所有问题解决了我遇到的许多其他问题。
这是简单的图形代码,下面是我收到的大量错误消息:
//
// This is example code from Chapter 12.3 "A first example" of
// "Programming -- Principles and Practice Using C++" by Bjarne Stroustrup
//
#include <PPP2HEADERS/Simple_window.h>// get access to our window library
#include <PPP2HEADERS/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
Graph_lib::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
}
//------------------------------------------------------------------------------
尝试编译时收到的错误消息:
1>------ Build started: Project: test2, Configuration: Debug Win32 ------
1>test4.cpp
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\VS\include\PPP2HEADERS\Graph.h(45,10): warning C4305: 'initializing': truncation from 'Graph_lib::Color::Transparency' to 'char'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\VS\include\PPP2HEADERS\Graph.h(45,46): warning C4309: 'initializing': truncation of constant value
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\VS\include\PPP2HEADERS\Graph.h(47,10): warning C4305: 'initializing': truncation from 'Graph_lib::Color::Transparency' to 'char'
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\VS\include\PPP2HEADERS\Graph.h(47,39): warning C4309: 'initializing': truncation of constant value
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\VS\include\PPP2HEADERS\GUI.h(107,39): warning C4018: '<': signed/unsigned mismatch
1>C:\Users\darai\Documents\PPP C++ CODE\chapter12_graphics_example\test2\test4.cpp(16,23): error C2440: 'initializing': cannot convert from 'initializer list' to 'Graph_lib::Point'
1>C:\Users\darai\Documents\PPP C++ CODE\chapter12_graphics_example\test2\test4.cpp(16,23): message : No constructor could take the source type, or constructor overload resolution was ambiguous
1>C:\Users\darai\Documents\PPP C++ CODE\chapter12_graphics_example\test2\test4.cpp(22,28): error C2440: '<function-style-cast>': cannot convert from 'initializer list' to 'Graph_lib::Point'
1>C:\Users\darai\Documents\PPP C++ CODE\chapter12_graphics_example\test2\test4.cpp(22,28): message : No constructor could take the source type, or constructor overload resolution was ambiguous
1>C:\Users\darai\Documents\PPP C++ CODE\chapter12_graphics_example\test2\test4.cpp(23,28): error C2440: '<function-style-cast>': cannot convert from 'initializer list' to 'Graph_lib::Point'
1>C:\Users\darai\Documents\PPP C++ CODE\chapter12_graphics_example\test2\test4.cpp(23,28): message : No constructor could take the source type, or constructor overload resolution was ambiguous
1>C:\Users\darai\Documents\PPP C++ CODE\chapter12_graphics_example\test2\test4.cpp(24,28): error C2440: '<function-style-cast>': cannot convert from 'initializer list' to 'Graph_lib::Point'
1>C:\Users\darai\Documents\PPP C++ CODE\chapter12_graphics_example\test2\test4.cpp(24,28): message : No constructor could take the source type, or constructor overload resolution was ambiguous
1>Done building project "test2.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
我很确定 FLTK 安装正确,因为本书的附录 D 中有一个示例代码可以编译,并且我还使用了 here 中提到的更新的标头。
在这一点上,我已经尝试让图形代码工作好几天了,我想知道学习这本书的图形部分是否绝对必要。
如果我违反任何规则,任何人都可以提供任何帮助,我们将不胜感激并道歉,这是我第一次在堆栈溢出中发帖。
谢谢。
Point.H 按要求:
//
// This is a GUI support code to the chapters 12-16 of the book
// "Programming -- Principles and Practice Using C++" by Bjarne Stroustrup
//
#ifndef POINT_GUARD
#define POINT_GUARD
namespace Graph_lib {
//------------------------------------------------------------------------------
struct Point {
int x, y;
};
//------------------------------------------------------------------------------
inline bool operator==(Point a, Point b) { return a.x==b.x && a.y==b.y; }
//------------------------------------------------------------------------------
inline bool operator!=(Point a, Point b) { return !(a==b); }
//------------------------------------------------------------------------------
}
#endif // POINT_GUARD
【问题讨论】:
-
请编辑您的帖子以显示
chapter12_graphics_example\test2\test4.cpp的准确完整内容。您发布的代码与您发布的错误消息不匹配。还请在您的头文件之一中发布Point的类声明,以便我们查看它具有哪些构造函数。请注意,您收到的一些“警告”可能是因为代码是很久以前编写的,但需要修复“错误”才能构建此程序。 -
@JohnZwinck 我的完整代码已显示,唯一的变化包括顶部的附加 cmets。 Point.H 也已发布。谢谢你的帮助。
标签: c++ compiler-errors fltk