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

Passing inherited structs to poll()

本文关键字:poll 继承 结构      更新时间:2023-10-16
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 开始。当然,这会导致各种麻烦。

情况会有所不同,如果函数期望指向对象的指针数组 - 这将起作用。