C++中类的私有成员变量中有一个结构体数组,请问如何调用并返回?

lz9081 2012-10-12 02:23:28
struct str
{
string a;
string b;
};

class B
{
private:
int a;
str s[10];
public:
str* gets()const{ return s; }
}

请问如何返回这个s[10]数组呢,貌似我的那个gets()函数会出错?
...全文
722 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sethaperri 2012-10-12
  • 打赏
  • 举报
回复
你的gets函数是return s,返回的应该是结构对象s[0]的指针吧?
HAN-Kai 2012-10-12
  • 打赏
  • 举报
回复
要先初始化那个str数组
HAN-Kai 2012-10-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

C/C++ code
#include<iostream>
using namespace std;
struct str
{
string a;
string b;
};

class B
{
private:
int a;
struct str s[10];
public:
void sets(string str,int n=10)
{
for(i……
[/Quote]返回是类的内部指针需要对应好数据类型。
HAN-Kai 2012-10-12
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
struct str
{
string a;
string b;
};

class B
{
private:
int a;
struct str s[10];
public:
void sets(string str,int n=10)
{
for(int i=0;i<10;i++)
{
s[i].a=str;
s[i].b=str;
}
}
const str* gets()const{ return s; }
/* void print()
{
for(int i=0;i<10;i++)
{
cout<<"a "<<i<<s[i].a<<endl;
cout<<"b "<<i<<s[i].b<<endl;
}
}*/
};

int main()
{
B b;
b.sets("hello");
// b.print();
const str* st=b.gets();
for(int i=0;i<10;i++)
{
cout<<"a"<<i<<" "<<st[i].a<<endl;
cout<<"b"<<i<<" "<<st[i].b<<endl;
}
getchar();
return 0;
}
sublimepan 2012-10-12
  • 打赏
  • 举报
回复
你要是非要这么做,那就强转啊
B b;
str* p = const_cast<str*>(b.gets());
lz9081 2012-10-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

你是const函数,返回内部指针会出错的,
const str* gets()const{ return s; }
or
str* gets(){ return s; }
[/Quote]那我要在main函数中如何调用,这样可以么?
B b;
str *b=b.gets();
我在编译器上试了,貌似又是类型转换出了问题。
sublimepan 2012-10-12
  • 打赏
  • 举报
回复
你是const函数,返回内部指针会出错的,
const str* gets()const{ return s; }
or
str* gets(){ return s; }
lz9081 2012-10-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

声明友元
class B
{
private:
int a;
str s[10];
public:
friend str* gets()const{ return s; }
}
[/Quote]不对啊 ,我现在就想输出类成员中这个数组,编译器报的类型转换方面的错误
叁叁玖玖 2012-10-12
  • 打赏
  • 举报
回复
声明友元
class B
{
private:
int a;
str s[10];
public:
friend str* gets()const{ return s; }
}

65,183

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧