有命名空间的类怎么前置
有一个类B, 它在命名空间A里面,我一个头文件要用到B的指针,前置声明class A::B;
会报错.
这个时候怎么处理?? namespace A
{
class B;
}
?? 回复 1# mpstat
bb.h:
namespace AA
{
class BB
{
};
}ss.h:
//#include "bb.h"
class AA::BB;
class CC
{
AA::BB* bp;
};
ss.cpp:
#include "ss.h"
int main()
{
CC c;
return 0;
}g++报错:
In file included from ss.cpp:4:
ss.h:3: 错误:‘AA’未声明
ss.h:7: 错误:‘AA’未声明
ss.h:7: 错误:ISO C++ 不允许声明无类型的‘BB’
ss.h:7: 错误:expected ‘;’ before ‘*’ token 回复mpstat
bb.h:ss.h:ss.cpp:g++报错:
In file included from ss.cpp:4:
ss.h:3: 错误:‘AA’未声 ...
mpstat 发表于 2010-12-20 19:02 http://bbs.chinaunix.net/images/common/back.gif
没看明白... 引用其他命名空间的类 应该用 user namespace ** 吧... 经测试
如果你定义的命名空间中的类名和其他命名空间类名不同,不冲突
可以直接引用...
namespace AA
{
class BB
{
};
}
void main()
{
BB *p;
} 回复 5# wb112200 :/users/iscs/rt21/src/test/using>$ cat aa.cpp
namespace AA
{
class BB
{
};
}
int main()
{
BB *p;
return 0;
}
:/users/iscs/rt21/src/test/using>$ g++ -o aa aa.cpp
aa.cpp: In function ‘int main()’:
aa.cpp:14: 错误:‘BB’在此作用域中尚未声明
aa.cpp:14: 错误:‘p’在此作用域中尚未声明那这是什么意思?? 回复 6# mpstat
就是说 可以直接引用类名啊 不需要指定他属于哪个命名空间的... 回复wb112200 那这是什么意思??
mpstat 发表于 2010-12-20 20:58 http://bbs.chinaunix.net/images/common/back.gif
哦 忘了加声明 ... class BB;
页:
[1]