
MFCダイアログベースアプリを作成しています。
開発環境はVC++2005です。
CtestDlgクラスのOnBnClickedOk()関数内での処理、
CtestDlg2 dlg( &hoge );
にてCtestDlg2ダイアログ起動し、CString型変数hogeを、
CtestDlg2クラスのコンストラクタに引数として渡したいのですが、
コンパイルエラーが出てしまい、何が原因か分かりません。
解決法をご存知の方おられましたら、お手数ですがご教授お願い致します。
【エラー内容】
error C2664: 'CtestDlg2 ::CtestDlg2(const CtestDlg2 &)' :
1 番目の引数を 'CString *__w64 ' から 'const CtestDlg2 &' に
変換できません。(新しい機能 ; ヘルプを参照)
理由: 'CString *__w64 ' から 'const CtestDlg2' へは
変換できません。
コンストラクタはソース型を持てません、またはコンストラクタの
オーバーロードの解決があいまいです。
【CtestDlgクラス内宣言】
void CtestDlg::OnBnClickedOk(){
CString hoge = "aaa";
CtestDlg2 dlg( &hoge );
dlg.DoModal();
}
【CtestDlg2クラスコンストラクタ】
//CtestDlg2::CtestDlg2(CWnd* pParent /*=NULL*/)
CtestDlg2::CtestDlg2(CString* st, CWnd* pParent /*=NULL*/)
: CDialog(CtestDlg2::IDD, pParent), m_st(st)
{
}
【CtestDlg2クラスヘッダ内宣言】
public:
CtestDlg2::CtestDlg2(CString* st, CWnd* pParent /*=NULL*/);
CString* m_st;
No.1ベストアンサー
- 回答日時:
こんにちは。
この場合ですと、
CtestDlg2 dlg( &hoge );
ではなくて
CtestDlg2 dlg( &hoge, NULL );
ではないでしょうか。
CtestDlg2 dlg( &hoge );
と書きたい場合は、
【CtestDlg2クラスヘッダ内宣言】
public:
×CtestDlg2::CtestDlg2(CString* st, CWnd* pParent /*=NULL*/);
○CtestDlg2::CtestDlg2(CString* st, CWnd* pParent = NULL);
として、デフォルト引数を有効にして見て下さい。
この回答への補足
CtestDlg2 dlg( &hoge, NULL );
と宣言することでコンパイルを通すことが出来ました!
引数が足りなかったのですね。ありがとうございました!
しかし、最初はマルチバイト文字コードにて試したところ、
general error c101008a: Failed to save the updated manifest to the file ".\Debug\test.exe.embed.manifest". Qia|?L UcfD~Y
というエラーが出て、Unicodeに設定すると通りました。
なぜ文字コードの違いによって結果が異なるのでしょうか?
掲題の問題については解決したのですが、疑問なので、
もしお手数でなければご回答頂けませんでしょうか?
No.2
- 回答日時:
どこかで CtestDlg2のオブジェクトの代入などしていませんか?
コピーコンストラクタが定義されていないためのエラー(警告)のように思えますが ・・・
単に CString*を追加したコンストラクタに変更しただけではご質問のようなエラーは確認出来ませんが ・・・
コピーコンストラクタが呼ばれるような実装はしてないはずなんですが。。。
しかし、コピーコンストラクタに関して知識が甘いので、
見落としがあるのかもしれません。
再度ソースを見直してみます。
ご指摘ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- フランス語 フランス語フレーズの意味 1 2022/10/26 18:17
- 工学 制御工学の問題について 1 2022/10/22 17:42
- Excel(エクセル) 【エクセル】複雑な関数を教えてください 1 2023/06/05 18:09
- Excel(エクセル) エクセルのマクロを教えてください 2 2022/05/13 10:21
- 工学 制御工学の問題について 1 2022/10/22 11:06
- フランス語 Aux plus de という熟語の意味 1 2022/06/24 18:40
- 化学 化学の問題について質問です。 「血中グルコースC6 H12 O6 の濃度5.0mmol/l を (m 2 2022/04/17 13:35
- 数学 微分方程式の積分定数について 5 2023/07/13 08:39
- 物理学 ミンコフスキー図の見方について 2 2022/12/11 14:42
- 病院・検査 今椎間板ヘルニア手術で入院してます 最近すごいレントゲンやCT撮ったり 大丈夫ですかね。 歯のレント 1 2022/07/20 18:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ボタンをクリックすると数が増...
-
HTTPSのとき":"が"%3A"ではなく...
-
responseTextを使っての書き換...
-
Boolean型配列中のTrueの有無を...
-
Linux バイナリ実行できない "...
-
jQuery 変数を複数のセレクタ...
-
【Jquery】changeイベント毎にa...
-
static constメンバ変数(配列)...
-
class指定したHTML要素の背景色...
-
return (A && B) || 0;
-
static と externについて
-
全部のアクセスを指定したペー...
-
【正規表現】【javascript】CR...
-
ASP+アクセスでのSQLコメントに...
-
バイナリファイルから文字列を...
-
System::Drawing::Color::XXXX...
-
Double→Integerへの変換で「意...
-
アンカーリンクをクリックさせ...
-
プルダウンメニューをmouseout...
-
「オブジェクトが必要です。」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTTPSのとき":"が"%3A"ではなく...
-
ボタンをクリックすると数が増...
-
【正規表現】【javascript】CR...
-
Boolean型配列中のTrueの有無を...
-
Linux バイナリ実行できない "...
-
ASP+アクセスでのSQLコメントに...
-
Excel VBA の ChangeFileAccess
-
Vb.netのグローバル変数の宣言...
-
static constメンバ変数(配列)...
-
同じ型【ハイフンと数字】だけ...
-
javascriptで文字挿入でtoggle...
-
アンカーリンクをクリックさせ...
-
VC++のちらつき防止方法
-
C# .NET DataGridView の行を追...
-
MFCのキャプション変更
-
hoge の謎
-
confirmの連続?
-
return (A && B) || 0;
-
ifreamをリロードしたい
-
-(ハイフン)_(アンダーバー)の...
おすすめ情報