0
我有以下問題:一個屬性爲不同類型的
extern Keyboard keyboard;
extern Controller controller;
class PlayerInputDevice
{
public:
void SetDevice(DEVICETYPE deviceType)
{
switch(deviceType)
{
case KEYBOARD:
Device = &keyboard;
break;
case CONTROLLER:
Device = &controller;
break;
}
}
Keyboard* Device;
Controller* Device;
};
很顯然,我不能只是基於一個事實,即分配&鍵盤和&控制器將有望選擇正確的財產2個設備屬性不同類型。 (加上ocmpiler不喜歡它)...
這個問題的解決方案是什麼:如何爲多種類型擁有一個屬性?
我玩過許多不同的模板想法,但似乎從來沒有完全實現它......我需要一隻助手來開闢一條新路。
使用我的一個例子上面會:
class ControlState
{
virtual bool Jumping() = 0;
virtual PressingUp() = 0;
}
class Keyboard : ControlState
{
// Implement those suckers
}
class Touch : ControlState
{
// Implement those suckers
}
class Player
{
PlayerInputDevice Input;
}
Player player;
player.Input.SetDevice(KEYBOARD);
player.Input.Device.PressingUp()
上面的例子實際上可能是ControlState
只是有布爾屬性,而且Keyboard
和Touch
(在這種情況下)可能只是有自己的輸入法像FingerMovedUp()
隨後將導致設置ControlState
布爾Up
爲true ...只是如等
你試圖解決什麼是真正的問題?現在,枚舉就足夠了... –
'void * Device;' – Ashalynd
OMG!這個怎麼用?請解釋更多:D IT COMPILES ATLEAST !!! – Jimmyt1988