超级菜问题,在一个类中如何定义一个返回值为指针的函数
struct s{
....
}
class classA:classA
{
public
}
///////////////////////////////////////////////
s* functionname{
}
/////////////////////////////
欧不知道怎么写啊。赫赫。。。没书网上也没查到
问题点数:30、回复次数:12Top
1 楼vcleaner(我没当大哥很久了.......)回复于 2004-12-02 11:55:37 得分 0
就是这么写的啊Top
2 楼nastar(阿门)回复于 2004-12-02 11:57:04 得分 0
s* func()
{
s *ss;
……
return ss;
}Top
3 楼fisker0303(天塌了,地陷了,小花狗不见了.)回复于 2004-12-02 11:58:39 得分 0
如楼上所说。Top
4 楼I_Love_CPP(Never stop!)回复于 2004-12-02 12:49:54 得分 0
来晚了。
我写个安全的代码;
把指针声明为成员
s* m_pointer;//记得要在析构函数中delete
s* func()
{
//对m_pointer进行处理
return m_pointer;
}
Top
5 楼pknife(小李飞刀)回复于 2004-12-02 13:09:19 得分 0
跟返回整型没什么两样Top
6 楼poplau(和你聊聊软件开发)回复于 2004-12-02 13:14:15 得分 0
struct s{
....
}
class classA:classA
{
public:
s* func();
}
///////////////////////////////////////////////
s* classA::func()
{
s *ss;
……
return ss;
}
///////////////////////////////////////////////
放在类里是这么写的吗?我这样试了一下,好像不行。。。。继续求救阿Top
7 楼xqk(夏乾坤)回复于 2004-12-02 13:58:01 得分 0
你想问什么呀到底,这不就是返回这个S结构的指针嘛? 没问题呀!Top
8 楼weiming28cn(未名)回复于 2004-12-02 14:22:32 得分 10
class classA:classA
这个能行吗?
而且,你在func()中不为ss分配内存空间的画,那么返回的指针就可能指向任意地址,也就得不到你要得值了!Top
9 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-12-02 14:40:50 得分 10
用new分配空间,然后再返回
s* classA::func()
{
s *ss = new s;
……
return ss;
}
记得deleteTop
10 楼poplau(和你聊聊软件开发)回复于 2004-12-02 15:51:07 得分 0
把我的代码贴出来吧。
class CClientTable
{
public:
struct ClientNode{
CClientSocket *ClientSocket;
SOCKADDR_IN Clientaddr_in;
ClientNode *Forward;
ClientNode *Next;
};
ClientNode *ClientNodeHead;
ClientNode *ClientNodeLast;
int ClientCount;
public:
CClientTable();
virtual ~CClientTable();
void ClientNodeCreat();
UINT ClientNodeAdd();
void ClientNodeDel(CClientSocket *ClientSocket);
void ClientNodeFree();
///////////问题就在下面,函数目的是找到该节点,并返回这个节点地址/////////////////
ClientNode * ClientNodeFind(CClientSocket *ClientSocket);//这里报错了
};
ClientNode * CClientTable::ClientNodeFind(CClientSocket *ClientSocket)//这里也报错了
{
ClientNode *temp;
temp=ClientNodeHead;
if (temp==NULL) return temp;
while (temp->ClientSocket->m_hSocket !=
ClientSocket->m_hSocket){
temp=temp->Next;
}
return temp;
}
//////////////////////////////////////////////。。。。。。。。。。。。。。Top
11 楼poplau(和你聊聊软件开发)回复于 2004-12-03 11:53:22 得分 0
??人呢?Top
12 楼ioriogami(八极推手er——VF铁杆非伪)回复于 2004-12-03 12:09:57 得分 10
办法1:在函数里new,调用者负责delete。
办法2:用传出参数而不用返回值。
3办法:在类中做一个ClientNode成员变量,专门用来返回其指针。Top




