为什么这段C++代码中数据成员p在成员函数abc中为“未定义标识符”?

2025-03-10 11:19:38
推荐回答(3个)
回答1:

请先定义class,再定义其公有函数...
#include
#include
#include
using namespace std;

class chain
{
public:
int *p;
chain(void)
{
p=NULL;
}
~chain(void)
{
delete p;
}
void abc(void);

};
void chain::abc(void)
{
p=new int(123);
}
void main(void)
{
chain *cp=NULL;
int *p2=NULL;
cp=new chain;
cp->abc();
p2=cp->p;
delete cp;
getch();
}

没有定义类chain,哪来的其成员函数...这个是常识啊,没有什么为什么的啊...纠正一下2楼的回答,编译器不是自上往下执行的,而是从main开始执行,之后再调用类的定义,其成员函数的定义

回答2:

你试试把void chain :: abc(void)
{
p=new int(123);
}
放在
class chain{}
后面吧

回答3:

编译器从上往下开始执行的,如果你没定义类,编译器不认识p,当然就是“未定义的”