2014-09-04 36 views
0

我創建了一個Visual C++項目,並在窗體中創建了一個按鈕。 Visual Studio爲按鈕單擊事件生成此方法:Visual C++ - 從按鈕單擊方法調用函數

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { 
} 

此代碼位於Form1.h文件中,現在沒有問題。然而,如果我嘗試調用一個函數,在事件方法中,使用其他類,如std :: cout(無關緊要,如果我在Form1.h文件中定義它,或者我#從另一個文件中包含它),則編譯器給我一個錯誤(C2079)。

爲什麼會發生這種情況?請耐心等待,因爲我是Windows GUI編程的完全noob,提前感謝任何人都可以提供幫助。

+0

提供一些失敗的源代碼會有所幫助。然而,如果你包括iostream,那麼你可能想用#include 替換它。從上面的代碼你使用C++/CLI我假設。 – 2014-09-04 11:12:38

+0

如果你使用fstream,也請確保你把它放在你的源文件'using namespace std'中。 – 2014-09-04 11:17:28

+0

@MichaelPetch:不,絕對不要。這是一個頭文件('Form1.h')。 – MSalters 2014-09-04 11:24:02

回答

0

好吧,有一個解釋是C2079的一部分。這就像'identifier' uses undefined class/struct/union 'name'。這與Windows或GUI編程無關。問題在於您必須定義您使用的名稱。

例如,std::cout<iostream>中定義,您可能沒有包括該值。順便說一句,你究竟在哪裏預期std::cout打印?正常的GUI沒有文本控制檯。

+0

我包含了iostream。我使用'std :: cout'作爲例子,我不需要它在我的項目中。 – jndok 2014-09-04 11:17:23

+0

iostream已被棄用(是舊的非標準庫的一部分),現在需要使用fstream頭文件 – 2014-09-04 11:18:44

+0

因此請嘗試'include ;使用名稱空間std'。有關過時的頭文件和VC++中的替換的更多信息,請參閱http://msdn.microsoft.com/zh-cn/library/aa984818(v=vs.71).aspx – 2014-09-04 11:19:56