这里的简单问题。我在这里用向量处理一些赋值问题。我有一堂课,库存:
class Inventory
{
public:
__inline void operator=( const Inventory& rtSide )
{
items.clear();
for(auto it=rtSide.items.begin(); it!=rtSide.items.end(); ++it)
{
items.push_back(*it);
}
}
private:
std::vector<void*> items;
}
有一个包含类的结构:
typedef struct
{
Inventory *inventory;
} player_t;
在 player_t 的指针上分配/执行指针数学运算时,如您所料,将调用 Inventory 的 = 重载。但是,使用 MSVC,似乎存在断言失败,特别是“向量迭代器不兼容”。奇怪的是,这发生在 clear() 上。我不知道这里发生了什么。如果有人能给我一些帮助,那就太好了。
这是正在发生的事情的一个例子。使用指针数学,我们可以通过从基数中减去当前客户端的播放器结构来确定客户端编号:
clientNum = newcl - svs.clients;
这正是导致我断言的原因。