22

这是我的代码。编译所有文件时出现此错误,我不确定自己做错了什么。请指教。

Molecule.cpp:7:34:错误:构造函数的返回类型规范无效

//Sunny Pathak
//Molecule.cpp    
#include <iostream>
#include "Molecule.h"    
using namespace std;

inline void Molecule::Molecule(){
       int count;
       count = 0;
}//end function

bool Molecule::read(){
    cout << "Enter structure: %c\n" << structure << endl;
    cout << "Enter full name: %c\n" << name << endl;
    cout << "Enter weight   : %f\n" << weight << endl;
}//end function


void Molecule::display() const{
    cout << structure << ' ' << name << ' ' << weight << ' ' << endl;
}//end function
4

4 回答 4

28

构造函数没有返回类型:

class Molecule
{
 public:
  Molecule();  // constructor. No return type.
  bool read();
  void display() const;
};

Molecule::Molecule(){
       int count;
       count = 0;
}//end constructor

另请注意,它count是构造函数主体的局部变量,并且您没有将它用于任何事情。

于 2013-02-14T23:16:56.147 回答
4

您正在编写具有返回类型的构造函数。构造函数没有返回类型。只需将构造函数定义更改为:

/* void */ Molecule::Molecule()
// ^^^^ Remove this
{
    int count;
    count = 0;
}
于 2013-02-14T23:17:12.207 回答
2

构造函数不能有返回类型

更新:

inline void Molecule::Molecule(){
       ^^^
       int count;
       count = 0;
}//end function

至:

Molecule::Molecule(){
       int count;
       count = 0;
}//end function
于 2013-02-14T23:17:16.850 回答
2

在以下情况下可能会出现同样的错误消息:

  • 类在 H 文件中定义但缺少分号
  • 您的 CPP 文件包括 H 文件,并且还以类构造函数的定义开始。

然后编译器会将您的类定义视为构造函数方法的返回类型,并抛出此错误。如果是这种情况,那么解决方法是添加分号。

注意:在 OP 的示例中情况并非如此,但报告的错误(以及因此该问题帖子的标题)将是相同的。

于 2020-10-11T07:42:07.307 回答