c ++编译“错误:'='标记之前的预期构造函数,析构函数或类型转换”

时间:2010-07-28 19:50:07

标签: c++

位于同一文件'foo.h'中的非常简单的代码:

class Xface
{
  public:
    uint32_t m_tick;
    Xface(uint32_t tk)
    {
      m_tick=tk;
    }
}

std::map<uint32_t, Xface*> m;

Xface* tmp;

tmp = new Xface(100);  **//Error**
m[1] = tmp;  **//Error**

tmp = new Xface(200);  **//Error**
m[2] = tmp;  **//Error**

错误是 错误:在'='标记之前的预期构造函数,析构函数或类型转换 对于每项任务。

4 个答案:

答案 0 :(得分:8)

C ++不是脚本语言。您可以声明可执行代码块范围之外的项目,但不能进行任何处理。尝试将错误代码移动到这样的函数中:

int main()
{
    std::map<uint32_t, Xface*> m;

    Xface* tmp;

    tmp = new Xface(100);  **//Error**
    m[1] = tmp;  **//Error**

    tmp = new Xface(200);  **//Error**
    m[2] = tmp;  **//Error**
}

答案 1 :(得分:4)

你的代码必须在某个函数中,你不能把它放在void :-)尝试在m​​ain中运行相同的代码,看看会发生什么。

答案 2 :(得分:3)

class Xface
{
  public:
    uint32_t m_tick;
    Xface(uint32_t tk)
    {
      m_tick=tk;
    }
}    // need a semicolon here

您在类定义的末尾缺少分号。

答案 3 :(得分:2)

您没有默认构造函数。你需要一个不需要任何参数的构造函数。现在,你有一个需要uint32_t的构造函数,所以你不能new它们的数组。更不用说,正如Neil指出的那样,缺少分号,以及gruszczy观察到可执行代码需要在函数中。