返回存储在 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;
}
我试图通过使用访问函数返回值来打印出存储在 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;
}