gpt4 book ai didi

char 指针上的 C++ 错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:41 26 4
gpt4 key购买 nike

我想在结构中初始化一个 char* 字符串。

这是结构:

typedef struct __String  {
char* data; // C-string data,
unsigned* copyRef; // number of copy reference, delete only when the copyRef is 0
bool isACopy; // this boolean is true when *data is a ref to an other MyString

__String () {
data = 0;
isACopy = false;
copyRef = new unsigned();
*copyRef = 0;
return;
}

void addCopyRef() {
*copyRef++;
}

void removeCopyRef() {
*copyRef--;
}
} *MyString;

这就是它崩溃的地方..

void Initialize(MyString& string){

string->data = new char[LENGHT];
string->data[0] ='\0'; // this generate an error!
string->addCopyRef();
}

这是主要的:

MyString left_string, right_string, both_string;
Initialize(left_string);
Initialize(right_string);
Initialize(both_string);

第一个好,第二个不好..你能帮我了解问题出在哪里吗?谢谢!

最佳答案

在像这样传递对象之前,您需要为对象分配内存:

MyString left_string = new __String();
Initialize(left_string);

一般建议不要使用这样的 typedef,它们非常困惑并且容易出错。如果您决定对指针进行 typedef,至少表明它是类型中的指针,即:typedef struct __String* MyStringPtr

关于char 指针上的 C++ 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15998589/

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