我必须创建一个程序员,其中一名妓女从飞机上跳下来。用户输入高度和妓女打开降落伞的时间。我还没有完成我的所有代码,只是想知道它是否可以在我继续之前运行但是我总是得到这个错误(从'int'转换为非标量类型'Point'请求。)我们也在使用我很新的Hortsmann图书馆。任何人都知道这个错误意味着什么,我该怎么做才能解决这类错误?如果你不明白我的问题,请告诉我。 这是代码: #include“ccc_win.h” #include
using namespace std;
class Chutist{
public:
Chutist();
Chutist(Point loc); //constructor where chutist always points up
void display (int i, int s) const; //accessor function, displays chutist
void move (int dx, int dy); // mutator function, moves chutist
private:
Point jumpman;
Point location; // location of chutist
};
//default
Chutist::Chutist(){
location = Point (0, 0);
}
//construction of Chutist object at Point loc;
Chutist::Chutist(Point loc){
jumpman = loc;
}
void Chutist::display(int i, int s) const{
if (s < i){
Point top = (jumpman.get_x(), jumpman.get_y());
Circle c = (top, 10);
cwin << c;
}
}
void Chutist::move(int x, int dy){
}
int ccc_win_main(){
cwin.coord(0, 2000, 2000, 0);
int loc;
int altitude = 0;
int secondstoopen = 0;
int velocity = 0;
cout << "Please enter the altitude to jump at." << endl;
cin >> altitude;
cout << "Please enter the time to open the parachute." << endl;
cin >> secondstoopen;
Chutist jumper = Chutist(Point(0, altitude));
jumper.display(secondstoopen);
}
答案 0 :(得分:1)
错误发生在
行中 Point top = (jumpman.get_x(), jumpman.get_y());
Circle c = (top, 10);
您打算创建Point
和Circle
的实例。我们没有相应的标题,根据常识,可以安全地假设这些类具有明显参数(int, int)
和(Point, int)
的ctor。因此,创建类对象的正确方法是
Point top(jumpman.get_x(), jumpman.get_y());
Circle c(top, 10);
或
Point top = Point(jumpman.get_x(), jumpman.get_y());
Circle c = Circle(top, 10);
会导致调用适当的构造函数。
您的代码会产生以下结果。表达式(jumpman.get_x(), jumpman.get_y())
计算到最右边的jumpman.get_t_y()
,这就是逗号运算符的工作方式。因此,编译器得出结论,您希望从单个Point
构造int
,这是不可能的,因为(显然)没有这样的构造函数或转换运算符。第二行也是如此,具有不同的构造函数参数。
答案 1 :(得分:0)
对于将来的引用,这是因为[Point top =(jumpman.get_x(),jumpman.get_y()); 圆c =(上,10);]。我想因为我们正在创建点和圆圈,我们不应该使用等号。