第26講 クラスの学習その1☆☆
第7話 メソッド解説その2
struct K{
  //フィールド
  char a[3][40];
  char as[3][40];

  char kok[40],sya[40],suu[40],rik[40],eig[40];
  int d[3][5];

  //メソッド
  void f1(char* na,char* nb,char* nc); //名前の取得
  void f2(char* sa,char* sb,char* sc); //性別の取得
  void f3(int nm,int d1,int d2,int d3,int d4,int d5); //得点の取得

};

void K::f1(char* na,char* nb,char* nc ){
  strcpy(a[0],na); //出席番号0の名前取得
  strcpy(a[1],nb); //出席番号1の名前取得
  strcpy(a[2],nc); //出席番号2の名前取得
}

void K::f2(char* sa,char* sb,char* sc ){
  strcpy(as[0],sa); //出席番号0の性別取得
  strcpy(as[1],sb); //出席番号1の性別取得
  strcpy(as[2],sc); //出席番号2の性別取得
}

void K::f3(int nm,int d1,int d2,int d3,int d4,int d5){
  d[nm][0]=d1; //出席番号nmの国語点数取得
  d[nm][1]=d2; //出席番号nmの社会点数取得
  d[nm][2]=d3; //出席番号nmの数学点数取得
  d[nm][3]=d4; //出席番号nmの理科点数取得
  d[nm][4]=d5; //出席番号nmの英語点数取得
}

void main(){
  int i,j;
  K A;
  A.f1("太郎","次郎","花子");
  A.f2("男","男","女");
    ・
    ・
  A.f3(0,85,65,78,59,82);
  A.f3(1,27,52,28,45,60);
  A.f3(2,95,97,88,99,93);

  cout<<"クラスA:" <<endl;
  cout<<"名前"<<" "<<"性"<<" "<<A.kok<<" "<<A.sya<<" "<<A.suu<<" "<<A.rik<<" "<<A.eig<<" "<<endl;
  for(i=0;i<3;i++){
    cout<<A.a[i]<<" "<<A.as[i];
    for(j=0;j<5;j++)if(A.d[i][j]<10)cout<<" "<<A.d[i][j]<<" ";else cout<<" "<<A.d[i][j]<<" ";
    cout<<endl;
  }
    ・
    ・
    ・
}

f1は何をする関数でしょうか。
名前を入力する関数です。

花子は、図の矢印にしたがって、最後はa[2]にコピーされます。
太郎と次郎も同じです。

f1がわかればf2の理解は容易です。

女がas[2]にコピーされます。

f3はより複雑ですが、

図の矢印を見れば、お分かりになるかと思います。
出席番号0はオレンジの矢印にしたがって、nmに入ります。
そして85(国語の点数)は、緑の矢印にしたがって、d[0][0]に入ります。

結局、f1,f2,f3はそれぞれ名前、性別、得点の入力関数であることがわかります。
入力は、あくまでインスタンスAの世界での出来事です。
決して、抽象的なKの世界での入力でないことに注意して下さい。
あくまで具体的な世界Aでの代入です。
抽象『猫』から発生したインスタンス『ミケ』に、3色の色・体重・身長・性格などが代入されるのであって、
抽象『猫』に代入されるわけではないのと同じです。
5キロという体重は『ミケ』の体重であって、猫一般には具体的な体重はありません。
『人なつこい』『甘えん坊』などの性格も、個体『ミケ』の特徴であって、猫一般の性質ではありません。

関数を使うときA.f1となっていることから、インスタンスAでの入力=代入であることがわかります。
したがって、A.f1("太郎","次郎","花子");f1("太郎","次郎","花子");とするとエラーします。



第6話へ 第8話へ

戻る

VC++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座