[英]Overloading subscript operator not working as expected
我有一個String
結構,我在它上面重載了下標運算符。 但它似乎不起作用。
//my_string.h
struct String {
char* Text;
uint64 Length;
char& operator[](int32 index);
}
//my_string.cpp
char& String::operator[](int32 index) {
ASSERT(index >= 0);
return Text[index];
}
//main.cpp
String* test = string_create("Hello world");
char c = test[0];
Visual Studio 給了我以下錯誤:
不存在從“String”到“char”的合適轉換函數
編譯器發出錯誤,因為在此語句中
char c = test[0];
表達式test[0]
的類型為String
。
在本聲明中
String* test = string_create("Hello world");
您聲明了一個指針而不是 String 類型的對象。
如果它不是錯字,那么在這種情況下你必須寫
char c = ( *test )[0];
或者
char c = test->operator []( 0 );
數據成員Length
的類型為uint64
看起來也很奇怪
uint64 Length;
而運算符中使用的索引的類型為int32
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.