お世話になります。
//----------------------------------------
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しか返ってきません。
何故でしょう?
> csv2.SetData();
> b = csv1.NumCol();
指しているものが違うインスタンスでしょ。
インスタンスが別だからです。
cvs2に設定しておいてcvs1から値を取得しても取得できるわけがありません。
クラスとインスタンスがゴッチャになっているような気がします。
あと、main関数の中身も意味不明というか、多分、他のプログラムから
該当部分だけ抜いてきたんだと思いますが、
それならmainとか付けない方がいいです。
出所不明なdcとかありますし。
この辺はC++言語の入門書をもう一度読み直した方が良いのではないかなぁ。
因みに言うと
cvs1はCuCVS1クラスのインスタンスです。
cvs2はCuCVS2クラスのインスタンスです。
cvs2はCuCVS2クラスがCuCVS1クラスから派生しているので
内部にCuCVS1クラスの要素も内包していますが、それはcvs1とは別の実体です。
あと、
> とするのですが、eには0しか返ってきません。
ではなくて
とするのですが、bには0しか返ってきません。
が正しいと思います。
ツイート | ![]() |