返回存储在 class 中的 C 字符串

Returning a C string stored in a class

我试图通过使用访问函数返回值来打印出存储在 class 中的 C 字符串。

感谢您的帮助!

这是我在编译时得到的错误:

cstringClass.cpp: In member function 'char Foo::get_name()':
cstringClass.cpp:37:9: error: invalid conversion from 'char*' to 'char' [-fpermi
ssive]
  return name;
         ^

代码如下:

#include <iostream>
#include <cstring>
using namespace std;

class Foo
{
    public:
        void set_name(char a[]);
        char get_name();

    private:
        char name[10];

};

int main()
{

    Foo bar;
    char a[10] = "Test";

    bar.set_name(a);

    cout << bar.get_name();


    return 0;
}

void Foo::set_name(char a[])
{
    strcpy(name, a);
}

char Foo::get_name()
{
    return name;
}

所以错误说:

cstringClass.cpp: In member function 'char Foo::get_name()':
                                      ^^^^^^^^^^^^^^^^^^^^

确实:

        char get_name();

您将 get_name 声明为返回单个 char,而不是指向字符串的指针。你的意思可能是 char *get_name();.

如错误消息所述,您的 get_name() 函数没有 return 适当的类型,根据它 return 的数据应该是 char*,即 name[10]char return只有 1 个字节的数据而 name[10] 有 10 个。请参阅下面更正后的代码。

#include <iostream>
#include <cstring>
using namespace std;

class Foo
{
public:
    void set_name(char a[]);
    char *get_name(); //<-- correction

private:
    char name[10];

};

int main()
{

    Foo bar;
    char a[10] = "Test";

    bar.set_name(a);

    cout << bar.get_name();


    return 0;
}

void Foo::set_name(char a[])
{
    strcpy(name, a);
}

char *Foo::get_name() //<-- correction
{
    return name;
}