【发布时间】:2013-05-18 17:09:20
【问题描述】:
我有以下结构:
typedef struct{
int pktType;
void* sourcePeer;
void* destPeer;
void* aboutPeer;
int tree;
std::vector<int> cogSize; //LEAVE ?
std::vector<void*> newParents; //JOIN_REP
}packet;
另外,我有一个名为base_peer的类,声明如下:
class base_peer
{
...
public:
virtual void createMessage(int, base_peer*, base_peer*, base_peer*, int, std::vector<int>&, std::vector<base_peer*>&, packet*);
...
}
而createMessage()函数定义如下:
void base_peer::createMessage(int msgType, base_peer* msgSourcePeer, base_peer* msgDestPeer, base_peer* msgAboutPeer, int msgAboutTree, std::vector<int>& msgCogSize, std::vector<base_peer*>& newParents, packet* newPacket)
{
newPacket->pktType = msgType;
newPacket->sourcePeer = msgSourcePeer;
newPacket->destPeer = msgDestPeer;
newPacket->aboutPeer = msgAboutPeer;
newPacket->tree = msgAboutTree;
newPacket->cogSize = msgCogSize;
newPacket->newParents = newParents;
}
我希望createMessage 创建一个数据包结构并为其元素分配值。更具体地说,当我尝试将向量std::vector<void*> newParents 分配给向量std::vector<base_peer*>& newParents 时,就会发生错误。
我从 Eclipse 收到以下错误:
从 'std::vector' 到参数 1 的未知转换 'const std::vector&'
std::vector<_tp _alloc>& std::vector<_tp _alloc>::operator=(const std::vector<_tp _alloc>&) [with _Tp = void*; _分配= std::allocator]
'newPacket->packet::newParents = 中的 'operator=' 不匹配 newParents'base_peer.cpp
感谢您的帮助。
【问题讨论】:
-
为什么是
void*?这对我来说是一种代码味道。 -
实际上我正在使用
void*,因为我有一个循环依赖问题:structpacket应该知道base_peer类和相反。我找不到解决办法。 -
@user2397244:试试
vector<class base_peer*>而不是vector<void*> -
@user2397244:也许你应该先问一个关于这个问题的问题。
-
@BenjaminLindley 你可能是对的:我认为 void 指针可以解决最初的问题......
标签: c++