2009-11-22 155 views
1

我正在使用.net在C++中處理電子郵件應用程序,並且遇到了一個我似乎無法解決的問題。我試圖實現一些控制器類。頂部塊是我的.h文件,底部是.cpp文件。我得到的錯誤是:未聲明標識符

'ComposeMail' : undeclared identifier 
'email' : undeclared identifier 
syntax error : identifier 'ComposeMail' 

這幾乎就像我的include語句不工作。

頁眉:

#pragma once 
#include "ComposeMail.h" 

class MainWindowController{ 
public: 
    MainWindowController(void); 
    void ComposeClick(void); 
}; 

實現:

#include "StdAfx.h" 
#include "MainWindowController.h" 

MainWindowController::MainWindowController(void) 
{ 
} 

void MainWindowController::ComposeClick(void){ 
    ComposeMail^ email = gcnew ComposeMail(); 
} 
+0

您需要發佈ComposeMail.h中的內容 – nos 2009-11-22 01:16:30

回答

0

沒有ComposeMail的ComposeMail.h的代碼,我們可以沒有真正回答。

編譯器說ComposeMail沒有被聲明,所以你必須檢查包含以查看它丟失的位置,可能是因爲macro-fu或者是因爲某處出現了錯字錯誤。

0

好的我想通了......我的ComposeMail的代碼構造函數是在Firemail(我們的項目名稱)命名空間中,因此我必須使用命名空間FireMail編寫 ; 在我的.h文件中。這工作。感謝您的答案。

+0

請勿將'using namespace'放在頭文件中。 '使用命名空間'指令令人不悅。相反,加上你的類的前綴:'FireMail :: ComposeMail^email = gcnew FireMail :: ComposeMail();'。這通常也增加了可讀性。如果你真的想使用using指令,把它放在'.cpp'文件中,這樣包含你的頭文件的其他源文件不會受到影響。最後,你可以使用另一種使用指令:'使用FireMail :: ComposeMail'。這隻會將一個類移入當前名稱空間。 – GManNickG 2009-11-22 01:33:19

+0

感謝您的建議。我一定會這樣做。 – 2009-11-22 02:01:10