staticってオーバーロード出来てもよくね?
突然専門的な話題ですみません。
C++とかJavaとかの話です。
class Hoge{
int number;
int getNumber(){
return number;
}
static Hoge myArray[10];
static int current;
public:
static void setCurrent(int i){
current=i;
}
static int getNumber(){
return myArray[current].getNumber();
}
};
みたいなことが出来てもいいんじゃまいかと。
ちなみに
Hoge.cpp:16: error: `static int Hoge::getNumber()’ and `int Hoge::getNumber()’ cannot be overloaded
って怒られるわけですが。
static関数呼ぶときは Hoge::getNumber() とかなるわけだし。確実に判別可能なはず。
ぇ、Java的にはそこは「シングルトンで対応汁(゜Д゜)」とか言うもんなんじゃないの?
んー、しかしデザインパターンの理解/活用はホント難しい…( ´-`) と思うのはオイラだけですか。そーですか(´・ω・`)
>1
そこは「Java的には」っていうより「デザパタ的には」と言うべきだが、それはさておきシングルトンもあんま関係ない。
単純に、ある特定のインスタンスに対して実行したいメソッドと、その時点でのカレント、もしくは集合全体に対して実行したいメソッド(こっちがstaticね)を、同じ名前にしたいっていうのは、ありうる欲求だし、禁止する理由がなにかあるのかね?っていう話です。
名前変えればいいだけの話なんだけどさ。
C++の場合、派生クラスから基底クラスのメソッドを呼ぶとき判定できなくなってしまうように思います。
例のgetNumberはprivateだから派生クラスから呼べませんが、可視性によって、オーバロードできたりできなかったりするのはキモイなと。
Javaの事情はよく分からんス。
>NANRIさん
うぉぉ、その通りです。超納得しました。
そうか、基底クラスから呼ぶときか。。。
気づかなかった。