2016-05-02 14 views
-1

私はまだC++のnoobieですので、まだデバッグに熟練していません。このコンパイルエラーを修正する方法を理解しようとしています。C++コンパイラエラーのデバッグ

CruiseShip.cpp:11: error: expected ‘)’ before ‘n’

CruiseShip.cpp

#include "CruiseShip.h" 
#include "Ship.h" 

#include <iostream> 

using namespace std; 

Ship s; 
int passengers; 

    CruiseShip(string n, string y, int p) : Ship(n,y) 
    { 
    passengers=p; 
    } 

    void print() 
    { 
    cout<<"Name: "<<s.getName()<<"\nMaximum passengers:"<<passengers<<endl; 
    cout<<"-------------------------"<<endl; 
    } 

CruiseShip.h

#ifndef CRUISESHIP_H 
#define CRUISESHIP_H 
#include "Ship.h" 
#include <string> 
using namespace std; 

//class Ship; 

class CruiseShip:public Ship{ 
    private: 
     int passengers; 
     Ship::Ship s; 
    public: 


     CruiseShip(string, string, int); 

    virtual void print(); 
}; 

#endif 

Ship.h

#ifndef SHIP_H 
#define SHIP_H 
#include <string> 

using namespace std; 

class Ship{ 
private: 
    string name; 
    string built; 

public: 
    Ship(); 
    Ship(string, string); 
    string getName(); 
    string getBuilt(); 
    virtual void print(); 


}; 
#endif 
あなたがそれらを定義するときは、クラス CruiseShipの一環として printCruiseShip(コンストラクタ)を宣言しない

1および2:

+1

CruiseShip.cppで: 'CruiseShip :: CruiseShip(string n、string y、int p)...'。また、そこに 's'と'乗客 'を再宣言する必要はありません。 –

+0

'Ship :: Ship s;'が正しくないように見えます。おそらくあなたは '船s 'を必要とするでしょう。 – NathanOliver

+0

そして、 'Ship'から継承している場合、本当に' s'メンバー変数が必要ですか? –

答えて

0

あなたは3個のエラーを持っています。ので、これは不要であるあなたは、名前空間Shipを持っていけない、

CruiseShip::CruiseShip(string n, string y, int p) : Ship(n,y) { 
virtual void CruiseShip::print() { 

3:あなたはする必要があり、この後

Ship::Ship s; // This only needs to be Ship s <- NameSpace::ObjectType nameOfObject; 

はそれがhttp://ideone.com/wJ6mPOをコンパイルします。ただし、まだ定義していないすべての関数への未定義の参照があるため、リンクされません。

+0

私は以前にヘッダファイルに_CruiseShip :: CruiseShip(string n、string y、int p):Ship(n、y)_を持っていました。 – willh231

+0

@ willh231しかし、今はcppファイルにあります。あなたはどのクラスに属しているのかを教えておく必要があります。 –

関連する問題