Лучший / аккуратный / более читаемый способ определения функций-членов класса (и вложенного класса)?

Возможный дубликат:
Можно ли избежать повторения имени класса в файле реализации?

Я работал над попыткой (пере) изучения c ++, и у меня возникли некоторые проблемы с пониманием объектно-ориентированного программирования на c ++. Я провел много времени в последнее время, работая на Java, и, возможно, это сделало меня ленивым, но вот проблемы, с которыми я сталкиваюсь.

Вот не совсем полный код, с которым я работаю:

class Pong{
public:
Pong();
void run();private:
//Class to represent a pong ball
class Ball{
public:
Ball();
int getVector();
private:
int xvel,yvel;
};

//Class to represent a pong paddle
class Paddle{
public:
private:
};

bool init();
//The ball and player paddles
Ball ball;
Paddle p1;
Paddle p2;
};
//Ball members
Pong::Ball::Ball(){

}
//Paddle members
Pong::Paddle::Paddle(){

}

//Pong members
Pong::Pong() : ball(Ball()),p1(Paddle()),p2(Paddle()){
ball = Ball();
p1 = Paddle();
p2 = Paddle();
}
bool Pong::init(){
if(!log("Starting pong...")){return 2;}
return 0;
}
void Pong::run(){
if(Pong::init() != 0){log("Failed to initialize Pong!");}
return;
}

Проблемы, которые у меня есть, на самом деле связаны с удобочитаемостью. Мне интересно, есть ли менее уродливый способ определения членов и вложенных членов, без необходимости указывать что-то вроде, например, Pong :: Ball :: Ball (), то есть IE, помещающий пространство имен перед каждым отдельным членом.

Я что-то здесь не так делаю? Исходя из Java, где все члены определены внутри самого класса, мне кажется, что это действительно … грубо для меня, возможно, определить все (включая методы вложенного класса) вне определения класса. Это работает, но я не могу избавиться от ощущения, что есть лучший способ сделать это, однако ресурс, который я использовал (cprogramming.com), говорит, что это именно то, что нужно сделать.

(Изменить: незадолго до того, как меня поймают, я знаю, что могу удалить дубликаты определений внутри конструктора Pong. Просто я еще не …)

2

Решение

Исходя из Java, где все члены определены внутри самого класса, мне кажется, что это действительно … грубо для меня, возможно, определить все (включая методы вложенного класса) вне определения класса.

Это не проблема. C ++ настолько хорош, что позволяет вам определять методы как внутри и снаружи определения класса.

Если вы хотите оставить определение вне, нет, нет способа снизить квалификацию.

Я только указываю на следующее, потому что думаю, что вы можете ошибаться:

Pong::Pong() : ball(Ball()),p1(Paddle()),p2(Paddle()){
ball = Ball();
p1 = Paddle();
p2 = Paddle();
}

должно быть

Pong::Pong(){
}

то есть — не нужно любой явная инициализация.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]