Ошибка C ++: ожидаемое первичное выражение перед маркером '*' в конструкторе с параметрами - PullRequest
3 голосов
/ 10 июля 2011

Я пытаюсь создать класс с конструктором с пятью параметрами.Единственное, что делает конструктор, это передает все параметры конструктору суперкласса.Этот класс не имеет никаких дополнительных переменных: его единственная цель - изменить реализацию виртуальной функции getClassType.По какой-то причине этот заголовок выдает «ожидаемое первичное выражение перед '*' токеном» в строке с конструктором, а также четыре «ожидаемых первичного выражения перед« int »» в той же строке:

#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, и я не заметил никакой ошибки, поэтому я застрял.

Ответы [ 2 ]

10 голосов
/ 10 июля 2011

Вы не передаете типы в конструктор базового класса:

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){}
1 голос
/ 10 июля 2011

Вы не должны повторять тип для вызова конструктора суперкласса.

Suelo(b2World *world,int x,int y,int w,int h) : Plataforma(world, x, y, w, h){}    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...