?????崩溃了,大家帮忙

symbol_bc 2008-04-13 06:27:27
我定义了一个结构数组, 总是报错 'return' : cannot convert from 'A::tt [10]' to 'tt *',调了n遍了,变来变去的,怎么都不行,大家帮帮忙!!!!!
clas A
{
public:
struct tt* GetStruct();//取结构值
private:
struct tt
{
int tyu;
char* sdc;
long ui;
};
};

struct tt* A::GetStruct()
{
struct tt ffr[10];

ffr[0]->sdc = "fffff";
ffr[0]->tyu = 12121;
ffr[0]->ui = 0.02;

return ffr;
}

...全文
95 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttkk_2007 2008-04-13
  • 打赏
  • 举报
回复
你解决了?我真不敢相信
不想低调 2008-04-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 symbol_bc 的回复:]
原来的声明后面访问不到!
[/Quote]


返回局部变量 也是不行的 lz的代码还得改..

改法可参考明哥的代码.
AZHANG00000 2008-04-13
  • 打赏
  • 举报
回复
'return' : cannot convert from 'A::tt [10]' to 'tt *'

原因是tt 是在类中定义的,所以在类外编译器不一定能识别
在这里是 不能识别而出错的

另外,你整个类的设计给人的感觉都不好
struct tt
{
int tyu;
char* sdc;
long ui;
};
这只是声明一种类型,而没变量,教人郁闷
  • 打赏
  • 举报
回复
呵呵~ 局部类用起来比较麻烦的
Supper_Jerry 2008-04-13
  • 打赏
  • 举报
回复
struct tt* A::GetStruct()  
{
struct tt *ffr = new tt;

ffr->sdc = "fffff";
ffr->tyu = 12121;
ffr->ui = 0.02;

return ffr;
}
lzr001 2008-04-13
  • 打赏
  • 举报
回复
struct tt* A::GetStruct()
{
struct tt ffr[10];

ffr[0]->sdc = "fffff";
ffr[0]->tyu = 12121;
ffr[0]->ui = 0.02;

return ffr;
}

GetStruct函数返回的是tt的指针,而ffr是tt数组的指针,可以转换为tt**。
另外,ffr是一个临时变量,当函数返回时会自动释放,将其指针返回到函数外也会有问题的!
symbol_bc 2008-04-13
  • 打赏
  • 举报
回复
有高人在场,解决了!
原来是声明顺序不对!
正确代码是:
clas A
{
private:
struct tt
{
int tyu;
char* sdc;
long ui;
};

public:
tt* GetStruct();//取结构值
};

A::tt* A::GetStruct()
{
struct tt ffr[10];

ffr[0]->sdc = "fffff";
ffr[0]->tyu = 12121;
ffr[0]->ui = 0.02;

return ffr;
}

原来的声明后面访问不到!
HelloDan 2008-04-13
  • 打赏
  • 举报
回复
这样当然不行了,返回的不是指针,类型不正确。而且还是局部变量的。出了作用域就不行的了。
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-04-13 06:27
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下