[英]C++ Operator overloading, my own string class
我試圖在c ++ 11中創建自己的字符串類,但是我遇到了一些問題。 比較我的類和std :: string類,我無法弄清楚如何使用
std :: string.at(int)='a'; 方法/過載。
我在自己的類中創建了at(int)方法:
int at(int index)
{
if(index <0 || index > size-1) {throw std::out_of_range("Error, index out of range");}
return data[index];
}
如果我只使用它,它工作得很好:
MyString.at(2);
在主文件中:
MyString = "Hello world!"; //Works fine!
MyString.at(2)='a'; //Gives, Error: expressino must be a modifiable Ivalue.
任何幫助都會很棒,謝謝!
至少有一個at()
成員函數需要返回對char
的非const引用。 像這樣:
char &at(std::size_t idx)
{
return data[idx];
}
定義const
版本也是有益的:
const char &at(std::size_t idx) const
{
return data[idx];
}
還要注意使用std::size_t
(這是一個無符號類型,保證足夠大以表示任何大小)。 這樣可以提高可移植性,而不必檢查負指數。
您要返回一個整數,而不是對該字符的引用,您可能需要:
char& at(int index)
當然,您需要返回正確的字符類型,但無論如何您需要返回一個引用,以便調用者能夠分配它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.