- 締切済み
クラスメンバの中で配列を利用したい
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- C++でfriendクラスにしているのにprivateメンバにアクセスできない
C++でメンバ変数をprivateにして、特定のクラスにだけ公開するようにクラスをfriend指定したのですがprivateメンバにアクセスできませんとエラーが吐かれてしまいます。 先行宣言したりもしてみたのですがどうしても使用できません。 何か心当たりのあるかた教えてください。 class A { friend class B; private: int a; }; class B { public: void test( A *a ) { a->a = 0; } }; コードは違いますがこんな感じのことをしたいのです。 /* コンソールで小さなプログラムでテストしてみると動くのにいざ実際のソースに組み込むと動かないという奇妙な状態です。よろしくお願いします。 */
- ベストアンサー
- C・C++・C#
- クラス型のメンバ変数について
クラス型のメンバ変数って、どういったメリットがあるのでしょうか? 以下のプログラムは疑問点の部分だけ書いたプログラムです。 class Caaa { (内容) }; class Cbbb { protected: Caaa m_bbb; } 上のプログラムの、 Caaa m_bbb; の部分が、どういった意味(使い道)があるのかわかりません。 int型やvoid型のメンバ変数は分かるのですが、他のクラスの型をもったメンバ変数はどういった意味があるのでしょうか。 どなたが教えてください。
- 締切済み
- C・C++・C#
- C++ クラスをメンバにもつクラスについて
お世話になります。C++初心者でうまくコードが書けません(><) クラス1と2があり、クラス1のメンバにはクラス2があります。 メインでクラス1をインスタンス化してクラス2のfunc2を呼び出します。 func2ではクラス1のインスタンスから呼び出された場合にクラス1の m_int1を取得します。 Class Class1{ public: int m_int1; Class2 m_Class2; }; Class Class2{ public: void func2(); }; void Class2::func2(){ /*ここの記述方法が分かりません*/ /*C1から呼び出されたらC1のm_int1に100を入れる*/ /*以下間違え*/ class1 C2_1;/*別のclass1のオブジェクトなのでこれに入れてもダメっぽい*/ C2_1.m_int1 = 100; } void main(){ class1 C1; C1.m_int1 = 10; C1.m_class2.func(); } C1.m_class2.func()の中から呼び出したC1にアクセスする方法が 分かりません(TT)。実体がまだあるのだからアクセスする方法は あると思うのですが・・・ どなたかよろしくお願いします。
- ベストアンサー
- C・C++・C#
- クラスがメンバーとしてクラスを持つ時の宣言について
自作クラスMainClassがMyClassというクラスをメンバー変数として持つ場合、宣言時に引数をいくつか持つコンストラクタを呼び出そうとすると構文エラーとなります。 class MyClass { public: MyClass(int, int); } class MainClass { private: MyClass myclass(10,10); } このような宣言はできないのでしょうか。 引数なしのコンストラクタは呼び出せているようです。
- ベストアンサー
- C・C++・C#
- static constメンバ変数(配列)の初期化について
C++初心者です。 constメンバ変数の初期化について教えてください。 クラスの中に、static constメンバ変数(配列)を持ちたいのですが、 <コード1> class hoge { public : hoge(){}; virtual ~hoge(){}; static const int fuga[2] = {1, 2}; }; とすると、VC++ 2005では、 error C2059: 構文エラー : '{' error C2334: '{' の前に予期しないトークンがありました。関数の本体は無視されます というエラーが発生します。 何がいけないのでしょうか? また、下の様にするとOKでした。 <コード2> class hoge { public : hoge(){}; virtual ~hoge(){}; static const int fuga[2]; }; const int hoge::fuga[2] = {1,2}; こうすればコンパイルが通る事は分かったのですが、なぜこんな面倒な事をしないといけないのかが分かりません。 コード1では何がいけないのでしょうか? 以上、よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 配列であるメンバのコンストラクタを呼ぶ方法
C++のクラスについて教えていただけないでしょうか。以下のような場合、 class ClassA { int A; public: ClassA(int a): A(a) {} }; class ClassB { ClassA A; public: ClassB(): A(10) {} }; class ClassC { ClassA A[2]; public: ClassC() {} //配列であるメンバのコンストラクタを呼び出したい }; ClassBがClassAのコンストラクタを呼ぶには上記のような方法で良いと思うのですが、ClassCのようにメンバが配列の場合、そのメンバのコンストラクタを呼ぶにはどのようにしたら良いのでしょうか。ご教授をお願いします。
- ベストアンサー
- C・C++・C#
- クラス同士を配列化するこはできますか?
調べてもそれらしきサンプル載っていなかったので質問します。 使用言語はjavaSE6です 例えばこんな感じです class A{ int a=0; } class B{ int b=1; } class C{ int c=2; } class sample{ public static void main(String[] args){ //クラスA、クラスB、クラスCを配列にするやりかたわからないのでここまで } } 宜しくお願いします。
- ベストアンサー
- Java
- 文字列のメンバ変数を外部変数のように扱いたい
済みません。質問なのですが、 メンバ変数を外部変数のように扱うにはどうしたらよいのでしょうか? int型などの場合、 class test{ static const int a; }; const int test::a = 10; とすればよいですよね? これをcharの配列にして class test{ static char a[7][32]; }; char test::a[0] = "test"; とすると サイズが0の配列を割り当てまたは宣言しようとしました というコンパイルエラーがでてしまいます…。 多次元配列の場合はstatic変数としてもてないのでしょうか? char** として宣言してもどこでnewを行えばよいか解りません。 コンストラクタの中で行えば そこでstaticではなくなってしまいますし…。 後、できればstringクラスの配列で持ちたいのですが #include <string> class test{ static string test[7]; }; string test::test[0] = "aaa"; なんてことができますでしょうか? 質問内容が解りにくいかも知れませんが どうか教えてください。 宜しくお願いいたします。
- ベストアンサー
- C・C++・C#
- ネストトップクラス・メンバクラスについて
現在、SJC-P取得に向け独学でJavaの勉強中です。 ネストクラス・インナークラスについて勉強している最中なのですが、 数冊テキストを読み込んでも、web検索をしても、イマイチよくわからない・・・というのが正直なところです。 どのクラス(アウタークラス/staticインナークラス/非staticインナークラス)の、 どういうメンバ(static/非static/private/final)が、 どのクラスのどういうメンバにアクセス出来るのかが整理しきれません・・・。 わからないなりに、まとめてみたのですが、理解が不十分で、かつ、この下記の通りの理解で正しいのかどうかもわかりません。 (言葉でうまく表現も出来ていない箇所も・・) また理解すべきポイントに不足があるかと思います。 どこが正しく理解出来ているのか・どこがどう間違っているかの指摘及びその内容・理解不足の箇所・よりわかりやすい例の追加や補記など、どうかよろしくお願い致します。 ●staticなインナークラス(=ネストトップクラス)について ・アウタークラスのインスタンスなしに、staticなインナークラスのインスタンスの生成が出来る。 ・staticなインナークラスからはアウタークラスの非staticメンバを直接アクセス出来ない。 (→ただし、staticアウターメンバになら直接アクセス出来る?staticであればprivateでもアクセス可?) ・staticなメソッド内で非staticなインナークラスのオブジェクトが生成出来ない。 ●非staticなインナークラス(=メンバクラス)について ・非staticなインナークラス内にstaticなメンバを持つことは出来ない。 ・アウタークラスのインスタンスを生成してからでないと非staticなインナークラスのインスタンスは生成出来ない。 ・アウタークラスの非staticメンバ及びstaticメンバに直接アクセス出来る。 ●アウタークラス(=外部クラス)について ・アウタークラスのstaticメソッド内で非staticなインナークラスのインスタンスは生成出来ない。 ・非staticインナークラスのメンバ及び、staticなインナークラスのメンバにアクセス出来る。 --------------------------------------------------------- (例)処理はさておき、定義はこんな感じを思い描いております・・ class Outclass{ private int aa; private static int bb; private outMethod1(); private static outMethod2(); class NotStaticInner{ private int cc; //private static int dd;//不可 private inNotStaicMethod1(); //private static inNotStaticMethod2();//不可 } class StaticInner{ private int ee; private static int ff; private inStaticMethod1(); private static inStaticMethod2(); } } 参考テキスト: 『Sun Certified Programmer for Java2 Platform5.0 Exam【310-055】』のChapter11:「ネストクラス・インナークラス」 参考URL: http://wisdom.sakura.ne.jp/programming/java/java46.html
- 締切済み
- Java
- クラス型配列のコピー
いつもお世話になっています。 クラス型配列のコピーについてなのですが、 普通の配列だと //コピー元配列 String[] str1 = {"str1","str2","str3" }; //コピー先配列 String[] str2 = new String[2]; //指定分だけ、配列内データをコピー System.arraycopy(str1,0,str2,0,2); //表示 for(int s=0;s<2;s++ ) { System.out.println(str2[s]); } といった形式で、コピーできますが、 これがクラス型の場合可能でしょうか? サンプル例として、 public class SampleFormBean { private String sampleName; private int number; public void setSampleName(String sampleName) { this.sampleName = sampleName; } public String getSampleName() { return sampleName; } public void setNumber(int number) { this.number = number; } public int getNumber() { return number; } } というクラスがあった場合で、 実行するソースは、 //SampleFormBeanクラス型配列 SampleFormBean [] sampleS = SampleFormBean Sample[3]; //SampleFormBeanクラスインスタンスの生成 SampleFormBean sample = new SampleFormBean (); //データの設定 sample.setSampleName("test1"); sample.setNumber(0); sampleS[0] = sample; sample.setSampleName("test2"); sample.setNumber(1); sampleS[1] = sample; sample.setSampleName("test3"); sample.setNumber(2); sampleS[2] = sample; という感じになります。 また、for()なら、ディープコピーとして可能ですが、 これ以外に何か手段はあったりするのでしょうか? 宜しくお願いします。
- ベストアンサー
- Java
お礼
コンパイルエラーは発生しないんです。 ただ実行すると、「問題が発生しました…(中略)問題を送信しますか?」とでるのです。 もう一度見直してみます。