【发布时间】:2011-09-09 11:22:36
【问题描述】:
我有以下情况。下面附上一个伪代码。我有一个 A 类,它有一个 D 或 E 类型的对象 c 并且这会有所不同(实际上是随机决定的)。它使用 b 作为与远程计算机通信的消息。
- 那么,我应该如何让结构 B 具有不同的变量(在这种情况下为浮点数或双精度数)?
- 此外,当我打开一个套接字并传输一个对象时,该对象现在将具有不同的大小。远程计算机不知道对象的大小是否对应于 sizeof(int) + sizeof(float) 或 sizeof(int) + sizeof(double)。我需要大小作为参数来接收数据包,我该如何解决这个问题?
代码:
class C
{
...
};
class D: public C
{
...
};
class E: public C
{
...
};
struct B
{
int a;
// If A->c is of type D
float b;
// If A->c is of type E
double b;
};
class A
{
B b;
C *c;
A()
{
c = (C*) new D;
//c = (C*) new E;
}
...
...
void transmit()
{
//b has some attributes depending on whether c is of type D or E
//Open a socket and send packets via UDP
//The remote host receives the packets
}
};
我希望这能解释我的问题。如果不清楚或模棱两可,请告诉我。我将提供更多细节和解释。提前致谢。
【问题讨论】:
标签: c++ class sockets inheritance struct