c++ compiling “error: expected constructor, destructor, or type conversion before '=' token ”

后端 未结 4 436
暖寄归人
暖寄归人 2021-01-19 03:55

Very simple codes located in the same file \'foo.h\':

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

std         


        
相关标签:
4条回答
  • 2021-01-19 04:35

    You have no default constructor. You need to have a constructor that doesn't need any arguments. Right now, you've got a constructor that needs a uint32_t, so you can't new an array of them. Not to mention, as Neil pointed out, the missing semicolon, and gruszczy's observation that executable code needs to be in a function.

    0 讨论(0)
  • 2021-01-19 04:47

    Your code must be inside some function, you can't just put it in void :-) Try running the same code in main and see, what happens.

    0 讨论(0)
  • 2021-01-19 04:53

    C++ is not a scripting language. You can declare items outside the bounds of an executable block of code, but you cannot do any processing. Try moving the erroring code into a function like this:

    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**
    }
    
    0 讨论(0)
  • 2021-01-19 04:55
    class Xface
    {
      public:
        uint32_t m_tick;
        Xface(uint32_t tk)
        {
          m_tick=tk;
        }
    }    // need a semicolon here
    

    You are missing a semicolon at the end of the class definition.

    0 讨论(0)
提交回复
热议问题