需要进一步的解释:参考非const的初始价值必须是lvalue



项目范围:学术

预期目的:有一个GUI进行项目提交。这个问题涉及使图形窗口的定义区域 clickable。我不熟悉其他图形库。

我已经在此站点上的其他地方浏览了有关此错误的类似帖子:"对非con的引用的初始值必须是lvalue。"我确实需要一些进一步的解释来解决这个问题:

    #include "graph1.h"`
 displayPNG("solve.png", 560, 120);
int x2 = 560 + 54; 
  int x1 = 560;
  int y1 = 120;
  int y2 = 291 + 120;
  const int * xSolv2 = &x2;
  const int * xSolv1 = &x1;
  displayPNG("exit.png",545,415);
  //Game (loop) play for buttons, options & clickables. 
  //while (true){
   if (leftMouse((xSolv2 > xSolv1) && (x1 < &x2), (&y2 > &y1) && (&y1 < &y2)))  //error: "Initial value of reference to non-const must be an lvalue."
   {
      cout << "Test button functions properly" << endl;
   }

我尝试了以下变体,但没有成功。

//shortened for brevity purposes. 
bool function (&x,&y) 
bool function (*x,*y) // I had created some pointer var(s) earlier and initialized them. 

bool function(x, y)

如果有人在使用graphiclib2015.lib的" graph1.h"方面有经验,我渴望学习。

我可能是错误的,但是您可以消除xSolv1xSolv2。如果您需要指向x1的指针,则可以提供&x1

指针是一个很好的来源!!和意外的行为。当您说(xSolv2 > xSolv1)-您正在比较x1x2的内存位置!几乎可以肯定不是您想要的☺

正如您所说的签名是bool leftMouse(int &x, int &y),您可能想做……

之类的事情
int x;
int y;
leftMouse(x, y); // probably will update x and y with the mouse position
if (x1 < x && x < x2 && y1 < y && y < y2 ) {
  // then the mouse is in box
}

相关内容

  • 没有找到相关文章

最新更新