- PR -

デバッグ中の変数参照について

1
投稿者投稿内容
未記入
会議室デビュー日: 2007/08/28
投稿数: 18
投稿日時: 2007-09-05 14:10
VS2005のC++/CLIでアプリを作っているものです。

デバッグ中に作成したメソッドの引数に渡されて来る値をウォッチで
見ようとすると「エラー: 識別子 'hensuu' はスコープ外です」とな
り中身が見れません。
作成したクラスのメンバ変数は見れます。

C++/CLIは初めてなのですが、メソッドに引数渡しは使わない方がよい
のでしょうか。

初心者の質問ですが、宜しくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-09-05 14:37
引用:

未記入さんの書き込み (2007-09-05 14:10) より:

デバッグ中に作成したメソッドの引数に渡されて来る値をウォッチで見ようとすると「エラー: 識別子 'hensuu' はスコープ外です」となり中身が見れません。作成したクラスのメンバ変数は見れます。


再現しませんでした。 別のメソッドの変数を式ウォッチに追加しているのだろうと思ったのですが、どうもこのデバッガはそういった判断はせず変数が同名のものは現在のブレークした位置での変数を見ているようです。(良いのかこれで...)

新規プロジェクトで同じ現象が再現するか確認して頂くなりして、現象が再現する最低限のコード (ミニマム コード) を提示して頂けると助かります。

引用:

C++/CLIは初めてなのですが、メソッドに引数渡しは使わない方がよいのでしょうか。


いいえ。 言い方が難しいのですが、引数パラメータで事足りるならどんどん使ってください。 スコープは狭いに限ります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
会議室デビュー日: 2007/08/28
投稿数: 18
投稿日時: 2007-09-05 16:00
>じゃんぬねっとさん

以下が発生した時のソースです。
----------------------------
TestClass.h
----------------------------
#pragma once

using namespace System;

ref class TestClass
{
public:
TestClass(void);

// 追加メソッド
void func( String^ );
};
----------------------------
TestClass.cpp
----------------------------
#include "StdAfx.h"
#include "TestClass.h"

using namespace System;

TestClass::TestClass(void)
{
}

// 追加メソッド
void TestClass::func( String^ str ){

String^ tmp;

tmp = str;
}
----------------------------
Form1.h
----------------------------
#pragma once

#include "TestClass.h"

namespace test2 {

(省略)

public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: ここにコンストラクタ コードを追加します
//

TestClass^ aaa = gcnew TestClass();

aaa->func( "あいうえお" );


}

(省略)
----------------------------

プロジェクトは、CLRのWindowsフォームアプリケーションで作成しています。
未記入
会議室デビュー日: 2007/08/28
投稿数: 18
投稿日時: 2007-09-07 11:06
自己解決しました。

C++/CLIの参考書の通り作成していたのですが、
それがダメだった様です。

「TestClass.h」で下記の様にしましたが、
void func( String^ );

「String^ str」とすることで、参照出来る様に
なりました。ヘッダだからといって、型だけでは
コンパイルは通りますが、参照は出来ないみたい
ですね。

ということで、お騒がせしました。
1

スキルアップ/キャリアアップ(JOB@IT)