class Socket{ //implementation
};
struct PollSocket : pollfd {
Socket mSocket;
// some methods
}
std::vector<PollSocket> mPolledSockets;
poll(mPolledSockets.data(), mPolledSockets.size(), 0);
我可以将继承的结构传递给poll()吗?如果没有,为什么?在这种情况下,似乎有很多错误。
答案 0 :(得分:2)
您不能对对象的数组(或向量)进行多态处理,并且此问题并非专门针对poll
机制。
原因很简单-如果函数需要一个指向N个对象的指针,每个对象的大小为Z,然后向其传递N个对象的数组,每个对象的大小为Z1,则函数会很困惑-会期望第二个对象从偏移量Z开始,而相反,它将从偏移量Z1开始。当然,这会导致各种各样的麻烦。
如果函数期望对象的 pointers 指针数组,情况将有所不同。