クラス


ソンジョウ  2005-06-17 03:31:25  No: 57948

お世話になります。
//----------------------------------------
class CuCSV{
protected:
  int m_iCols;
public:
  CuCSV(){ m_iCols = 0; }
  virtual ~CuCSV(){}
  int NumCol(){
    return m_iCols;
  }
};
class CuCsv2 : public CuCSV {
public:
  CuCsv2(){}
  virtual ~CuCsv2(){}
  virtual void SetData(){
    m_iCols = 2;
  }
};

main()
{
CuCSV  csv1;
CuCsv2 csv2;
CString e;
int b;
  csv2.SetData();
  b = csv1.NumCol();
  e.Format ( "%d", b );
  dc.TextOut( 0, 0, e );
}
//------------------------------------------------------
とするのですが、eには0しか返ってきません。
何故でしょう?


Blue  2005-06-17 03:37:36  No: 57949

>    csv2.SetData();
>    b = csv1.NumCol();
指しているものが違うインスタンスでしょ。


PATIO  2005-06-17 03:44:22  No: 57950

インスタンスが別だからです。
cvs2に設定しておいてcvs1から値を取得しても取得できるわけがありません。

クラスとインスタンスがゴッチャになっているような気がします。

あと、main関数の中身も意味不明というか、多分、他のプログラムから
該当部分だけ抜いてきたんだと思いますが、
それならmainとか付けない方がいいです。
出所不明なdcとかありますし。

この辺はC++言語の入門書をもう一度読み直した方が良いのではないかなぁ。

因みに言うと
cvs1はCuCVS1クラスのインスタンスです。
cvs2はCuCVS2クラスのインスタンスです。
cvs2はCuCVS2クラスがCuCVS1クラスから派生しているので
内部にCuCVS1クラスの要素も内包していますが、それはcvs1とは別の実体です。


PATIO  2005-06-17 03:46:28  No: 57951

あと、

> とするのですが、eには0しか返ってきません。
ではなくて

とするのですが、bには0しか返ってきません。
が正しいと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加