读书人

假如小弟我有个结构struct Packet在

发布时间: 2012-04-15 18:39:21 作者: rapoo

假如我有个结构struct Packet,在class A和class B中有用到。这个Packet应该在哪定义好呢?
假如我有个结构struct Packet,在class A(A.h)和class B(B.h)中都有用到。这个Packet应该在哪定义好呢?
我希望这个Packet结构的定义仅在A和B中可见,即是不要占用掉全局的名字。因为可能其他文件中也可能正好要用到Packet这个名字。

[解决办法]
A.h和B.h中如何用到struct Packet?
[解决办法]
改个名字得了,需要的时候强制转化成别的结构体
[解决办法]
要避免跟别的冲突就加个命名空间吧
[解决办法]
把Packet 放入一个单独的命名空间,比如pp

A和B里面用的时候就是pp::Packet
[解决办法]
单独放在一个头文件
[解决办法]

探讨
关键命名空间该叫啥名字呢。。。

[解决办法]
探讨

类似下面的用法。
Packet.h
struct Packet
{
int unknownA;
int unknownB;
};

A.h
#include "Packet.h"
class A
{
void foo(Packet packet);
};

B.h
#include "Packet.h"
class B
{
v……

[解决办法]
不好意思,前置声明的方式应该与定义的方式使用相同的关键字。因此Packet的前置声明应该为:
struct Packet;
而不是
class Packet;

读书人网 >C++

热点推荐