gpt4 book ai didi

c++ - char* 和 char[] 数组错误

转载 作者:太空狗 更新时间:2023-10-29 20:30:07 26 4
gpt4 key购买 nike

我正在尝试为我为高中 C++ 类(class)制作的游戏创建一个类(class)。我所有的设置功能都不起作用。我将发布一个专门为展示一个示例而量身定制的示例(我对所有这些都得到了相同的错误)。这是概率:

#include <iostream>

using namespace std;

class room {

public:

void set_desk(char *);
char get_desk();

private:

char desk[16];

}

int main {

room room1;
room1.set_desk("a desk");

cout << room1.get_desk();
return(0);
}
void room::set_desk(char *a){
room::desk = *a;
}
char room::get_desk(){
return(room::desk);
}

所以当我尝试编译它时,我得到这个错误:“在成员函数 void room::set_desk(char *)': error: incompatible types in assignment of char to char[16]” 还有这个错误: “在成员函数 char room::get_desk() 中:错误:从 char* 到 char 的无效转换”。

我需要 char 有一个 16 的数组,但是如果我从 char desk[16]; 中删除 [16],错误就消失了

最佳答案

你不能像那样将指针分配给数组。这是让它发挥作用的一种方法。

void room::set_desk(char *a){

if (strlen(a) >= sizeof(desk)){
// Internal buffer is not large enough. Handle error.
}

strcpy(desk,a);
}
char* room::get_desk(){
return desk;
}

但是,您最好在 C++ 中使用字符串 vector ,而不是 char 数组和指针。

*类定义后还缺少分号。

这里有一个更像 C++ 的方法:

class room {

public:

void set_desk(string);
string get_desk();

private:

string desk;

};

void room::set_desk(const string &a){
desk = a;
}
string room::get_desk(){
return desk;
}

int main {

room room1;
room1.set_desk("a desk");

cout << room1.get_desk();

return 0;
}

关于c++ - char* 和 char[] 数组错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7975072/

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