2017-04-26 89 views
-3

我需要幫助這個錯誤?類和構造錯誤C++

molecule.cpp:31:7:錯誤:合格基準爲 '摩爾' 是一個構造名稱,而不是隻要一個構造可以聲明 摩爾::摩爾(ATOM1(),Atom2()){

一個類型
class mole { 

private: 
     string name; 
     int proton; 
     int neutron; 
     int electron; 
     int valence; 
public: 
     int mass(); 
     mole(); 
     mole(Atom, Atom); 
     mole(string); 
     mole(string,int,int,int); 
}; 


mole::mole() 
    { 
     name="hydrogen"; 
     proton=1; 
     neutron=0; 
     electron=1; 
     valence=1; 
} 

mole::mole(Atom1(), Atom2()){ 
     proton= Atom1.p + Atom2.p; 
     neutron=Atom1.n + Atom2.n; 
     electron=Atom1.e + Atom2.e; 
} 

在另一個文件中:

#include<iostream> 

using namespace std; 

class Atom { 

private: 
     string name; 
     int proton; 
     int neutron; 
     int electron; 
     int valence; 
public: 
     int mass(); 
     Atom(); 
     Atom(int,int,int); 
     Atom(string); 
     Atom(string,int,int,int); 
}; 


Atom::Atom(){ 
     name="hydrogen"; 
     proton=1; 
     neutron=0; 
     electron=1; 
     valence=1; 
} 

Atom::Atom(int p, int n, int e){ 
     proton=p; 
     neutron=n; 
     electron=e; 
} 

Atom::Atom(string n){ 
     name=n; 
} 

Atom::Atom(string nm, int p, int n, int e){ 
     name = nm; 
     proton=p; 
     neutron=n; 
     electron=e; 
} 



int Atom::mass(){ 
     int mass = proton+neutron; 
     return mass; 

} 
+0

哪條線是線31? –

+1

更改:'mole :: mole(Atom1(),Atom2())' - >'mole :: mole(Atom Atom1,Atom Atom2)' –

+0

更改'mole :: mole(Atom1(),Atom2()) {'to'mole :: mole(Atom Atom1,Atom Atom2){' – eyllanesc

回答

0

我假設Atom是其他地方聲明一個類?如果你希望能夠在非默認構造函數接受Atom類型的兩個參數,你應該這樣聲明:

mole(Atom atom1, Atom atom2); 
... 
mole::mole(Atom atom1, Atom atom2) { 
    proton = atom1.p + atom2.p 
    .... 
} 
0

這麼多的錯誤。讓我們整理一下,並使其成爲真正的C++。

mole::mole(const Atom & a, const Atom & b) 
    : proton(a.p + b.p) 
    , neutron(a.n + b.n) 
    , electron(a.e + b.e) 
    , valence{} // or whatever calculation you intended 
{ 
}