定义类(和嵌套类)成员函数的更好/更整洁/更可读的方法

A better/neater/more readable way to define class (and nested class) member functions?

本文关键字:方法 更好 嵌套 成员 函数 定义      更新时间:2023-10-16

可能的重复:
是否可以避免在实现文件中重复类名?

我一直在努力(重新)学习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,所有成员都是在类内部定义的,这似乎真的。。。对我来说,定义类定义之外的所有东西(包括嵌套类方法)可能很粗糙。它是有效的,但我忍不住觉得有更好的方法可以做到,但我一直在使用的资源(cprograming.com)说这是需要的方法。

(编辑:就在有人抓住我之前,我知道我可以删除Pong构造函数中的重复定义。我只是还没有…)

来自java,其中所有成员都在类本身内部定义,这似乎真的。。。对我来说,定义类定义之外的所有东西(包括嵌套类方法)可能很粗糙。

这不是问题。C++非常棒,它允许您在类定义的内部和外部定义方法。

如果你想把定义放在外面,不,没有办法减少资格。

我只是指出以下几点,因为我认为你可能搞错了:

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

应该是

Pong::Pong(){
}

即-不需要任何显式初始化。