こんばんわ、毎度お世話になってばかりのよこです。
突然なのですが、また判らないところで止まってしまいました。
グローバル変数の使用方法なのですが、クラス間での変数の共有の仕方がわかりません。
1つのクラスの中では変数の値は正常に受け渡しされているのですが、他のクラスでその変数を使用するとエラーになってしまいます。
なにか、クラス間で変数をグローバルにするためには何かの宣言が必要なのでしょうか?
どうぞ、よろしくお願いします。
はじめましてです。マモーです。
グローバル変数なのか、クラス内のメンバ変数を
複数のクラス内で使用したいのかわかりません。
単純にグローバル変数を使用したいのであれば
クラス外に宣言して、他のファイルでは、extern するだけでは?
またグローバルに変数を使いたいのであれば、
アプリケーションクラス、ドキュメントクラスのメンバ変数
にするのが簡単だと思いますが...
すいません、質問が悪かったんですね。
説明不足でした…
単に、行いたい処理と言うのが、複数のクラス内で、変数の値を呼び出したり
書き込みが行いたい。
そのための宣言の方法や、変数の指定などの方法が知りたかったのです。
変数の種類と言うのはあまりこだわっていなかったのですが、イマイチやり方がわからないので
質問までうやむやになってしまいました。
とりあえず、メンバ変数は使っていません。
public:の下に変数を宣言したのですが、他のクラスでの値の出し方がうまくいきませんでした。
もういちど同じ質問なんですが、教えてもらえませんか?
できるだけ、具体的に教えてもらえると、ほぼ初心者の私には理解しやすいので…
よろしくお願いします。
↓のでどうでしょう。クラスAのメンバ変数をクラスBから使用するサンプルです。
class A
{
public:
int test;
}
class B
{
public;
void func();
}
B::func()
{
// クラスAのオブジェクトを宣言
A aObject;
// クラスAのメンバ変数にアクセス
A.test = 5;
}
まちがえた。
// クラスAのメンバ変数にアクセス
A.test = 5;
↓
// クラスAのメンバ変数にアクセス
aObject.test = 5;
でした。
すごくわかりやすい回答ありがとうございます!!
これで理解できました。
2度も質問してしまって、面倒かけてすいませんでした。
さすがに、これだけ書いてもらえると、すぐに使える状態まで持って来れました。
参考書などでも探したのですが、基本的な問題すぎて私の参考にしてる本には
ほとんど載っていなかったのです…
皆さん参考書はどのようなものを選んでいるんですかね?
ありがとうございました。
こっちの方がいいと思いますが。
class A
{
int test;
friend class B;
};
class B
{
public:
void func();
};
B::func()
{
// クラスAのオブジェクトを宣言
A aObject;
// クラスAのメンバ変数にアクセス
A.test = 5;
}
どんな理由があっても、クラスのメンバ変数をpublicにするのはあまり感心できませんね。