簡體   English   中英

重載下標運算符未按預期工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM