重複の可能性:
実装ファイルでクラス名を繰り返さないようにすることはできますか?
私は 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 コンストラクター内の重複した定義を削除できることを知っています。まだ行っていません...)