は例えば、私は、アプリケーション名を格納するクラスを持っている:C++ - どのように私はどこでも静的関数を呼び出すことができます、そのプライベート変数を変更する?
class Storage {
public:
static char* getName();
private:
char* name;
}
私はmain()関数では、例えば、からアクセスしたい:
#include <iostream>
using namespace std;
int main() {
char* name;
Storage s;
name = s.getName();
cout << name << endl;
return 0;
}
ご存知のように、静的メソッドは静的変数を使用する必要があるため、アクセスできません。私は "名前"プライベート静的にしようとしたとき、私はリンカエラーを取得します。私はそれをカプセル化したいので、パブリック静的変数を宣言したくありません。コードのすべての部分からメソッドを呼び出すため、静的にしたいと思います。
このプログラムはグローバル名を持ち、カプセル化されていなければならず、コードのすべての部分から名前に到達したいと考えてください。あなたは何をするべきか? Javaでは、プライベート静的変数は合法でした。しかしC++では非常に混乱しています。
ステートメント「静的メソッドは静的変数を使用する必要があります」は意味をなさない。静的なメソッドを書くことができます。静的なメソッドは、静的な変数やその他の変数を使用する必要はありません。そして、Javaが実行される限り、Javaのクラス静的変数はC++とまったく同じように動作します。 –