我想製作一個功能,而在不同的環境下,最好使用不同的名稱。如何創建具有多個標識符的功能?
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