[英]invalid initialization of non-const reference
好吧,我正在嘗試找出此錯誤,到目前為止,絕對沒有運氣。 我這樣做是為了做作業,這就是為什么我不使用包含類。
以下是相關代碼:
//Will return an array where each element is the sum of the respective sums in the added arrays
Vec& Vec::operator+(Vec& v2) const{
Vec ret();
if(mySize>0){
Vec ret(mySize);
for(unsigned i = 0;i<mySize;i++){
ret[i]=v2[i]+myArray[i];
}
}
else{
}
return ret;
}
從.h文件中...:
Vec& operator+ (Vec& v2) const;
這引發了錯誤:“類型'Vec(*)()'的右值對類型'Vec&'的非常量引用進行了無效的初始化”我對C ++來說是全新的,因此可以提供任何幫助。
實際的錯誤是您在運算符內部聲明了一個函數,而不是聲明了Vec
對象。
Vec ret();
您可以通過省略()
來解決此問題:
Vec ret;
除此之外,您還有一個基本的設計錯誤,因為您試圖返回對運算符作用域本地變量的引用,從而導致引用懸空。 表示加法運算符的通常方法是讓它返回一個新對象,並且通常實現為具有簽名的非成員函數,例如
Vec operator+(const Vec& lhs, const Vec& rhs);
這可以通過增量成員運算符來實現
Vec& operator+=(const Vec& rhs);
該參考可以返回this
的引用,因此沒有懸掛參考。 一個示例實現od operator+
將是
Vec operator+(Vec lhs, const Vec& rhs)
{
return lhs += rhs;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.