2011-07-10 8 views
3

5つのパラメータを持つコンストラクタを持つクラスを作成しようとしています。コンストラクタが行う唯一のことは、すべてのパラメータをスーパークラスのコンストラクタに渡すことです。このクラスには特別な変数はありません。唯一の目的はgetClassType仮想関数の実装を変更することです。何らかの理由で、このヘッダは、コンストラクタを持つ行に「『*』トークンの前に期待される一次式」を与え、それはまた、同じ行に「「int型の前に期待される一次式」4を与える:C++エラー:パラメータ付きのコンストラクタの '*'トークンの前に一次式が必要です

#ifndef SUELO_H 
#define SUELO_H 

#include "plataforma.h" 
#include "enums.h" 
#include "object.h" 
#include "Box2D/Box2D.h" 


class Suelo : public Plataforma 
{ 
public: 
    Suelo(b2World *world,int x,int y,int w,int h) : Plataforma(b2World* world,int x,int y,int w,int h){} 
    virtual ~Suelo(); 
    virtual ClassType getClassType(); 
protected: 
private: 
}; 

#endif // SUELO_H 

私はこれらのエラーがいくつかの誤字によって引き起こされたと仮定していますが、チュートリアルやGoogleでチェックしたところ、間違いに気付かないので気にしません。あなたは、基本クラスのコンストラクタに型を渡すことはありません

+0

ここで 'b2World'は定義されていますか? – jtbandes

答えて

9

class A 
{ 
    public: 
    A(int) {}; 
} 

class B : public A 
{ 
public: 
    B(int x) : A(x) // notice A(x), not A(int x) 
    {} 
}; 

をだから、あなたのコンストラクタは次のようになります。

Suelo(b2World *world,int x,int y,int w,int h) : Plataforma(world,x,y,w,h){} 
+0

おっと、私はそれを逃した!ありがとう! – Magnus

1

あなたはスーパークラスの型を繰り返してはなりませんコンストラクタ呼び出し。

Suelo(b2World *world,int x,int y,int w,int h) : Plataforma(world, x, y, w, h){}  
関連する問題