C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: 外部ファイルのアクセッサが値を保持しない


(過去ログ 42 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■22390 / inTopicNo.1)  外部ファイルのアクセッサが値を保持しない
  
□投稿者/ milk (1回)-(2008/07/22(Tue) 22:41:43)

分類:[C/C++] 

2008/07/22(Tue) 22:42:26 編集(投稿者)
2008/07/22(Tue) 22:42:23 編集(投稿者)

Windows系 VC++6.0です。
別ファイルにアクセッサを用意。
xxxViewファイルのコンストラクタで、座標をSet
xxxViewファイルのOnDraw関数で、座標をGet。
でも、OnDraw関数の時点で、リストはNULLとなっています。
何がいけないんでしょうか?教えてください。

↓こんな感じでコーディングしています。

------------------------------------
xxxxView.cpp
#include "CZukei.h"

コンストラクタ
{
Csankaku sankaku;
CPoint point = ( 100, 200 );
sankaku.setpoint( point );
}
OnDraw( )
{
Csankaku sankaku;
CPoint point = sankaku.getpoint();
}
------------------------------------
CZukei.h
class zukei
{
public:
setpoint( CPoint point );
CList< CPoint, &CPoint >& getpoint();
protected:
< CPoint, &CPoint > m_listPoint;
}
class sankaku: public zukei
{
//図形描画処理
}
------------------------------------
CZukei.cpp
{
CZukei::setpoint( CPoint point )
{
m_listPoint.AddTail();
}
CZukei::CList< CPoint, &CPoint >& getpoint();
{
return m_listPoint;
}

 Csankaku::図形描画処理
 {
}
}
引用返信 編集キー/
■22392 / inTopicNo.2)  Re[1]: 外部ファイルのアクセッサが値を保持しない
□投稿者/ 渋木宏明(ひどり) (828回)-(2008/07/22(Tue) 23:11:56)
渋木宏明(ひどり) さんの Web サイト
> 何がいけないんでしょうか?教えてください。

もっそ基本的なトコが理解できてないようです。

> コンストラクタ
> {
> Csankaku sankaku;
> CPoint point = ( 100, 200 );
> sankaku.setpoint( point );
> }



> OnDraw( )
> {
> Csankaku sankaku;
> CPoint point = sankaku.getpoint();
> }

において、Csankaku 型の変数 sankaku はローカル変数として宣言されています。

ローカル変数は、その変数を宣言したスコープ内でのみ有効です。

コンストラクタと OnDraw() の2か所で同名の Csankaku 型の変数を宣言したとしても、両者は「同じ型」という性質こそ共通ですが、モノとしては全くの別物です。

コンストラクタ内で宣言した sankaku が内包する値が、OnDraw() で宣言した sankaku にまで持ち越されることはありません。

# 方法がないわけではありませんが、原則として

でわどうするか、というと、この場合は xxxxView クラスのメンバ変数として Csankaku sankaku を配置するのが素直な解決のように思います。



引用返信 編集キー/
■22393 / inTopicNo.3)  Re[2]: 外部ファイルのアクセッサが値を保持しない
□投稿者/ milk (2回)-(2008/07/22(Tue) 23:20:48)
No22392 (渋木宏明(ひどり) さん) に返信

> でわどうするか、というと、この場合は xxxxView クラスのメンバ変数として Csankaku sankaku を配置するのが素直な解決のように思います。

ありがとうございます!すっきりしました!
以下のように記述すればよいでしょうか?
-------------------------------
xxxxView.h
public:
Csankaku m_sankaku;
-------------------------------


また、m_sankaku が二つ必要になったら以下のようにすればよいでしょうか
-------------------------------
xxxxView.h
public:
Csankaku m_sankaku;
Csankaku m_sankaku2;
-------------------------------

引用返信 編集キー/
■22398 / inTopicNo.4)  Re[3]: 外部ファイルのアクセッサが値を保持しない
□投稿者/ επιστημη (1174回)-(2008/07/23(Wed) 00:21:03)
επιστημη さんの Web サイト
> 以下のように記述すればよいでしょうか?

やってみりゃええです。

引用返信 編集キー/
■22399 / inTopicNo.5)  Re[4]: 外部ファイルのアクセッサが値を保持しない
□投稿者/ milk (4回)-(2008/07/23(Wed) 00:28:40)
No22398 (επιστημη さん) に返信
>>以下のように記述すればよいでしょうか?
>
> やってみりゃええです。
>
もっとスマートな方法があるのかな?って思いつつ。。
ありがとうございました!
解決済みにさせていただきます!
解決済み
引用返信 編集キー/
■22411 / inTopicNo.6)  Re[5]: 外部ファイルのアクセッサが値を保持しない
□投稿者/ επιστημη (1176回)-(2008/07/23(Wed) 10:31:33)
επιστημη さんの Web サイト
> もっとスマートな方法があるのかな?って思いつつ。。

そりゃ場合によりけりです。

m_sankaku が35個必要になったら
Csankaku m_sankaku[35];
でしょうし、実行時まで不定なら
vector<Csankaku> m_sankaku;
でしょうし。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -