在类对象中存储光标位置(ncurses c+;+;) < >我使用QtCu饰器编译我的C++代码和 库。< /P>
假设我们有以下类定义(.h): 和(.cpp): 在my main.cpp中,我试图将当前光标位置存储到Rogue的实例化中:在类对象中存储光标位置(ncurses c+;+;) < >我使用QtCu饰器编译我的C++代码和 库。< /P>,c++,class,struct,position,ncurses,C++,Class,Struct,Position,Ncurses,假设我们有以下类定义(.h): 和(.cpp): 在my main.cpp中,我试图将当前光标位置存储到Rogue的实例化中: Rogue Hero; getyx(stdscr, Hero.getHeroPosition().y, Hero.getHeroPosition().x); 但我总是会出错: using temporary as lvalue [-fpermissive] 下面还显示了文件中错误的一部分 #define getyx(w, y, x) (y = getcury
Rogue Hero;
getyx(stdscr, Hero.getHeroPosition().y, Hero.getHeroPosition().x);
但我总是会出错:
using temporary as lvalue [-fpermissive]
下面还显示了
文件中错误的一部分
#define getyx(w, y, x) (y = getcury(w), x = getcurx(w))
虽然我可以简单地将这些值存储在另一个在main.cpp
中初始化的结构中,但如何将x和y位置直接存储在类数据成员中
谢谢。最快的解决方案是更改
getHeroPosition
以返回引用而不是值:
coordinateYX& Rogue::getHeroPosition() {return heroPosition;}
问题在于,您正试图分配给Rogue
位置:
getyx(stdscr, Hero.getHeroPosition().y, Hero.getHeroPosition().x);
这相当于:
Hero.getHeroPosition().y = getcury(stdscr);
Hero.getHeroPosition().x = getcurx(stdscr);
但是getHeroPosition
按值返回位置(它返回一个副本,一个右值)。如果为临时副本指定值,它将丢失。解决方案是为实际Rogue
位置(左值)分配一个引用
或者,您可以使用现有的setPosition
功能:
coordinateYX position;
getyx(stdscr, position.X, position.Y);
Hero.setPosition(position);
@德雷舍姆,我向你道歉。我已经用正确的错误信息编辑了原始帖子。谢谢!返回别名似乎解决了我的问题。但是,现在我实际上无法获得值,因为
print(playerCoordinate,Hero.getHeroPosition().y)
(其中print函数仅在坐标处打印int)不起作用。任何解决方案,所以我的get函数可以同时使用?我尝试过重载,但也不起作用。在什么方面它“不起作用”?你有什么错误?我想不出为什么不应该。你可以用我的替代方案。
Hero.getHeroPosition().y = getcury(stdscr);
Hero.getHeroPosition().x = getcurx(stdscr);
coordinateYX position;
getyx(stdscr, position.X, position.Y);
Hero.setPosition(position);