static 變數的使用方法相當奇特, 請看如下程式碼
#include
using namespace std;
class Camera{
public:
static bool sound;
void *playSound; //PlaySound類別置於底下, 所以無法宣告為PlaySound型態
Camera();
void setSound(bool);
void takePicture();
};
class PlaySound{
public:
void play();
};
bool Camera::sound=true;
void Camera::setSound(bool f){
sound=f;
}
Camera::Camera(){
playSound=new PlaySound();
}
void Camera::takePicture(){
printf("Start take picture\n");
((PlaySound*)playSound)->play(); //將void* 轉換成PlaySound*
}
void PlaySound::play(){
if(Camera::sound)
printf("play sound\n");
else
printf("no sound\n");
}
int main(){
Camera *camera=new Camera();
camera->setSound(true);
camera->takePicture();
}
