error 非常量引用只能繫結到左值

2022-09-01 13:18:12 字數 887 閱讀 7516

今天遇到乙個關於c++引用的錯誤,說實話以前確實一直沒注意到過引用還有這個規則

1>------ 已啟動生成: 專案: opengl, 配置: debug win32 ------

1>game.cpp

1>d:\18482\visual studio\source\repos\opengl\opengl\game.cpp(55): error c2664: 「void spriterenderer::drawsprite(texture2d &,glm::vec2,glm::vec2,glfloat,glm::vec3)」: 無法將引數 1 從「texture2d」轉換為「texture2d &」

1>d:\18482\visual studio\source\repos\opengl\opengl\game.cpp(55

): note: 非常量引用只能繫結到左值

1>已完成生成專案「opengl.vcxproj」的操作 -失敗。

********** 生成: 成功 0 個,失敗 1 個,最新 0 個,跳過 0 個 **********

先解釋左值和右值的區別:

例子:

void func(int &a)

void

main()

void func(int &a)

voidmain()

void func(const int &a)//右值引用

void

main()

另外,右值引用可以延長臨時變數的生命週期,比如這個例子:

int func(int

a)void

main()

「引用繫結到引用」理解探析

在學習 c primer 容器相關章節的時候,看到這樣一句話 c.back 返回容器 c 的最後乙個元素的引用。如果 c 為空,則該操作未定義 429頁 但是在這句話之前,有這樣一段 list reference last2 ilist.back 1int i 12 2 int j i 3int k...

非常量引用初始化必須為左值

當引用的初始式是乙個左值 是乙個物件,你可以取得它的位址 其初始化就是非常簡單的事情。對 普通 t 的初始式必須是乙個型別t的左值。對乙個const t 的初始式不必是乙個左值,甚至可以不是型別t 在這種情況下 1 首先,如果需要將應用到t的隱式型別轉換 2 而後將結果存入乙個型別t的臨時變數 3 ...

C 非常量引用不能指向臨時物件

目錄 舉例分析 解決1 舉例 非常量引用 指向 臨時物件 即 將 臨時物件 傳遞給 非常量引用型別。如以下情況就會出現 實現實數rational類,實數可以使用 號相加,運算的結果要可以使用 cout 以分數形式輸出 實數rational 的值 rational a 4,5 rational b 1...