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

时间:2011-11-10 09:38:57

标签: c++

我在vector课程中收到错误,例如您在#include < vector >

时访问的课程

我只得到一次,而且我不知道为什么会发生这种情况:

  

错误C2036:'Agent *const ':未知大小

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

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

1 个答案:

答案 0 :(得分:16)

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

以下代码显示此错误:

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

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

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