[問題] const reference
程式碼:
IntArray(const IntArray ©)
{
array = new int[copy.getSize()];
for(int i=0;i<copy.getSize();i++)
array[i] = copy[i];
size = copy.getSize();
}
輸出:
1>.\test06.cpp(33) : error C2662: 'IntArray::getSize' : 無法將 'this' 指標從
'const IntArray' 轉換成 'IntArray &'
1> 轉換遺失限定詞
1>.\test06.cpp(34) : error C2662: 'IntArray::getSize' : 無法將 'this' 指標從
'const IntArray' 轉換成 'IntArray &'
1> 轉換遺失限定詞
1>.\test06.cpp(35) : error C2678: 二元運算子 '[' : 找不到使用左方運算元型別
'const IntArray' 的運算子 (或是沒有可接受的轉換)
1> .\test06.cpp(65): 可能是 'int &IntArray::operator [](int)'
1> 當嘗試符合引數清單 '(const IntArray, int)' 時
1>.\test06.cpp(36) : error C2662: 'IntArray::getSize' : 無法將 'this' 指標從
'const IntArray' 轉換成 'IntArray &'
1> 轉換遺失限定詞
如果將程式改為
IntArray(IntArray ©)
{
array = new int[copy.getSize()];
for(int i=0;i<copy.getSize();i++)
array[i] = copy[i];
size = copy.getSize();
}
或是
IntArray(const IntArray ©)
{
array = new int[copy.size];
for(int i=0;i<copy.size;i++)
array[i] = copy.array[i];
size = copy.size;
}
就沒有問題
size, getSize() 皆為 public member
getSize() 只有return size而已
有overload operator[]
想問的是為什麼加了const後就只能用member variable而不能用member function?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.107.184.218
推
06/03 10:04, , 1F
06/03 10:04, 1F
→
06/03 10:04, , 2F
06/03 10:04, 2F
推
06/03 10:43, , 3F
06/03 10:43, 3F
→
06/03 16:09, , 4F
06/03 16:09, 4F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 3 篇):