任何人都可以帮我理解这个错误吗?"隐式声明'classA :: classA()'"的定义

dar*_*rko 25 c++

下面是代码:

#include <cstdlib>
#include <iostream>
using namespace std;

class classA
{                   
      protected:
                void setX(int a);

      private:
              int p;
};

classA:: classA()
{                      //error here.
 p = 0;
}

void classA:: setX(int a)
{
 p = a;    
}

int main()
{   
    system("PAUSE");
    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

Naw*_*waz 50

您忘记在类定义中声明构造函数.public在类的部分中声明它(如果您希望客户端使用它创建实例):

class classA
{ 
      public: 
              classA();    // you forgot this!       
      protected:
                void setX(int a);

      private:
              int p;
};
Run Code Online (Sandbox Code Playgroud)

现在,您可以在已经完成的课程之外编写其定义.


Joh*_*itb 6

class classA
{                   
      protected:
                classA(); // you were missing an explicit declaration!
                void setX(int a);

      private:
              int p;
};

classA:: classA()
{ 
 p = 0;
}
Run Code Online (Sandbox Code Playgroud)

  • @Binary为什么我会想念`public`?该类的对象不是在`classA`或其派生类之一(其中没有)之外的任何地方创建的.很明显,该类已经设计为派生自,因为`setX`受到保护. (2认同)