char*和char []数组错误

use*_*742 3 c++ class char

我正在尝试为我的高中c ++课程制作一个游戏课程.我的所有设置功能都无法正常工作.我将发布一个专门用于显示一个示例的示例(我得到了所有这些的相同错误).这是概率:

#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);
}
Run Code Online (Sandbox Code Playgroud)

因此,当我尝试编译它时,我收到此错误:"在成员函数void room :: set_desk(char*)':错误:char与char [16]"的赋值不兼容类型"以及此错误:"在成员中function char room :: get_desk():error:从char*到char的无效转换".

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

Mys*_*ial 6

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

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;
}
Run Code Online (Sandbox Code Playgroud)

但是,你最好在C++中使用字符串向量而不是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;
}
Run Code Online (Sandbox Code Playgroud)

  • @ user1024742:使用Mysticial的strcpy建议.你的老师是正确的,鼓励你摆弄数组和指针.一旦熟悉了C的低级数组和指针,就会明白为什么像std :: string这样的高级C++特性很有用,以及何时使用它们. (3认同)
  • @ user1024742:听到它的声音,你可以为你的C++教育做的最好的事情就是停止听那位老师,而是读一本好书! (2认同)