gpt4 book ai didi

c++ - 重载下标运算符无法正常工作

转载 作者:行者123 更新时间:2023-12-03 06:57:38 24 4
gpt4 key购买 nike

我有一个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给我这个错误:

no suitable conversion function from "String" to "char" exists

最佳答案

编译器发出错误,因为在此语句中

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

关于c++ - 重载下标运算符无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64721525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com