错误 C2036:'Agent *const ':类中的大小未知'vector'

error C2036: 'Agent *const ' : unknown size in 'vector' class

本文关键字:未知 vector C2036 Agent 错误 const      更新时间:2023-10-16

我得到一个错误发生在vector类,如在,你访问的类当你#include < vector >

如果它只有一次,我不知道为什么会发生:

错误C2036: 'Agent *const ': unknown size

这也发生在vector中,有错误的代码在这里:

size_type size() const
{   // return length of sequence
    return (this->_Mylast - this->_Myfirst); // error on this line
}

这意味着此时还不完全知道Agent类型。您可能只是向前声明了它,但此时没有可见的定义。

以下代码段显示此错误:

#include <vector>
class Agent;
static int getSize(std::vector< Agent > const& v) {
    return v.size();
}

您需要的是在使用std::vector< Agent >之前包含定义Agent类的文件。该文件可能命名为Agent.h

出现错误的原因是,在您指出的代码行中,编译器试图计算两个Agent const*之间的差异。这大致等于转换为char const*的指针的差值除以sizeof(Agent)。但是,如果类型没有完全定义,则无法知道此大小。