将继承的结构传递给 poll()

Passing inherited structs to poll()

class Socket{ //implementation
};

struct PollSocket : pollfd  {
     Socket mSocket;
     // some methods
}

std::vector<PollSocket> mPolledSockets;
poll(mPolledSockets.data(), mPolledSockets.size(), 0);

我可以将继承的结构传递给 poll() 吗?如果不是,为什么?在这种情况下,我似乎遇到了很多错误。

您不能以多态方式处理对象数组(或向量),并且此问题并非特定于 poll 机制。

原因很简单 - 如果函数需要一个指向 N 个对象的指针,每个对象的大小为 Z,而你向它传递一个包含 N 个对象的数组,每个对象的大小为 Z1,函数将非常混乱- 它会期望第二个对象从偏移量 Z 开始,而它会从偏移量 Z1 开始。当然,这会导致各种麻烦。

情况会有所不同,如果函数需要指针数组到对象 - 这会起作用。