我想制作一个功能,而在不同的环境下,最好使用不同的名称。如何创建具有多个标识符的功能?
class box(){
private:
float posX;
float size = 10;
public:
float speedX;
float left(){ return posX; } //Any way to combine these?
float posX(){ return posX; } //Any way to combine these?
float right(){ return posX + size; }
};
box a;
box b;
bool checkCollide(){
if(a.right() < b.left()){ return 0; } //Not colliding
if(b.right() < a.left()){ return 0; } //Not colliding
return 1; //Colliding
} //Comparing right and left makes more sense than anything else
void physics(){
a.posX() += a.speedX;
b.posX() += b.speedX;
//Adding speed to position makes more sense than
//adding speed to "left"
}
//Loop physics X times per second, and do something if there's a collision
或者,有没有更好的方法来做到这一点?我可以在任何时间更改位置或大小时自动更新左/右成员,而不是重新计算每个呼叫吗?
要么使用不同的名称,要么使单一方法返回您的价值。不过,为了相同的目的而使用不同的名称可能会引起混淆。 – 2013-03-02 05:58:55
您可以分配给函数指针......但可能是性能成本。我只会使用更通用的标签。 – 2013-03-02 06:00:46
也许我应该让'posX'公开并做'a.posX + = a.speedX'?左/右比较将使用'.left()'和'.right()'来获得更清晰的语法。 编辑:除去函数'posX()'。 – AWTom 2013-03-02 18:14:43