我的函數get_num
返回變量long int
。錯誤:無法從'long'轉換爲'int'
我想寫的下一個操作員:
long int& operator [] (long int i) {
long int a = get_num(i);
int& b = a;
return b;
}
,但我得到了一個錯誤:
error C2440: 'initializing' : cannot convert from 'long' to 'int &'
error C2440: 'return' : cannot convert from 'int' to 'long &'
我怎麼能解決這個問題不改變的get_num
的功能?
任何幫助讚賞!
我有一個類:
class B {
B* next;
long int nom;
long int denom;
public:
long int get_nom() {return nom; }
long int get_denom() {return denom; }
};
class List {
B* head;
public:
long int& operator [] (long int desired_denom) {
// here I search the node that containts the denom that is equal to desired_denom
// and insert it to tmp (it's a pointer to B).
long int a1 = tmp->get_nom()
long int& a2 = a1;
return a2;
}
};
現在在
main
,我想做的事:
int main() {
A a; // assume that it creates the list of B and put values in each node (each B)
// here I want to do:
a[2] = 3; // it should search the node that his denom is equal to 2, and puts 3 instead of his nom
return 0;
}
例如:
如果我的名單是:
(nom=5, denom=6)->(nom=1,denom=8)->(nom=4, denom=2)->NULL
a[2]=3
搜索他的denom爲2節點行(這是第三點),並設置自己的NOM爲3
所以這行後,我的名單將是:
(nom=5, denom=6)->(nom=1,denom=8)->(nom=3, denom=2)->NULL
爲什麼你首先返回一個整數的引用?此外,返回一個本地自動變量的引用是UB。 – 2013-04-21 19:03:24
@ H2CO3返回一個引用對於運算符[]' – 2013-04-21 19:04:41
@DavidHeffernan是完全正常的,但不是對_local_變量的引用。 – 2013-04-21 19:05:37