Reputation: 241
Here's my code. When compiling all the files I get this error, I am not sure what I am doing wrong. Please advise.
Molecule.cpp:7:34: error: return type specification for constructor invalid
//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
Upvotes: 23
Views: 54348
Reputation: 844
This same error message can occur when :
The compiler will then see your class definition as the return type for the constructor method, and throw this error. If that's the case, then the fix is to add the semicolon.
Note : this is not the case in the OP's example, but the error reported (and hence title of this question post) would be the same.
Upvotes: 2
Reputation: 45410
Constructor can not have return type.
update:
inline void Molecule::Molecule(){
^^^
int count;
count = 0;
}//end function
to:
Molecule::Molecule(){
int count;
count = 0;
}//end function
Upvotes: 2
Reputation: 126442
You're writing a constructor with a return type. Constructors have no return type. Just change your constructor definition into:
/* void */ Molecule::Molecule()
// ^^^^ Remove this
{
int count;
count = 0;
}
Upvotes: 4
Reputation: 227418
A constructor has no return type:
class Molecule
{
public:
Molecule(); // constructor. No return type.
bool read();
void display() const;
};
Molecule::Molecule(){
int count;
count = 0;
}//end constructor
Also note that count
is local to the body of the constructor, and you are not using it for anything.
Upvotes: 27