【发布时间】:2020-11-06 21:00:41
【问题描述】:
我有一个 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”的合适转换函数
【问题讨论】:
-
test是指向字符串的指针,而不是字符串。因此 overloaded 下标运算符不适用。 -
我建议将
string_create的实现移动到String的构造函数中并完全删除该函数。
标签: c++ class operator-overloading subscript subscript-operator