2013-08-02 56 views
-3

我在Visual C++ 2010編程。我有一個example.h example.cpp和Form1.h。基本上,我粘貼了一些代碼。我不能在example.h文件中包含Form1.h,不知道爲什麼。但主要問題是如何從example.cpp中調用Test(它位於form1.h中)?語法是什麼?是否有可能做到這一點?在Visual C++ 2010中調用函數頭

我Form1.h

#include "example.h" 
public ref class Form1 : public System::Windows::Forms::Form 
{ 
    public: void Test(void) 
    { 
       // Does something 
    } 
} 

我example.cpp

#include "example.h" 
#include "Form1.h" 

Test(); // would like to call Test from here. 

回答

0

您這裏有兩個問題:

  1. 必須調用函數從另一個函數內。您目前在example.cpp文件中的代碼無效,因爲您正嘗試在全局範圍內調用Test()函數。

    使它看起來像這個:

    int main() 
    { 
        Test(); 
    
        return 0; 
    } 
    

    這也解決了,你沒有main功能,這是入口點的任何C++應用程序的問題。

    更一般地,我會強烈建議使用附帶的Visual Studio上手項目模板之一(而不是複製和粘貼代碼隨機位,像你說的)。這可以確保您擁有開始所需的所有內容,例如入門點。一旦你有一個堅實的基礎,你可以從那裏開始建設。

    您可能還會發現,獲取C++/CLI或聯機教程(例如:Hello C++/CLI, Part 1Hello C++/CLI, Part 2)的書籍很有用。

  2. Test功能是Form1類的成員功能,這意味着你需要一個類的對象,以調用它。因此,該代碼實際上應該是這樣的:

    int main() 
    { 
        Form1^ frm = gcnew Form1(); 
        frm.Test(); 
    
        return 0; 
    } 
    

    或者,您可以解決此通過使Test()功能static功能。這將允許你調用它,而不必在類的一個實例:

    public ref class Form1 : public System::Windows::Forms::Form 
    { 
        public: static void Test(void) 
        { 
         // Does something 
        } 
    } 
    
    // ... 
    
    int main() 
    { 
        Form1::Test(); 
    
        return 0; 
    } 
    

    然而,當心,這意味着你不能訪問任何其他成員Form1類的Test()函數內(因爲沒有this指針)。

    這應該在你決定用來學習C++/CLI搜索關於「類」或「面向對象設計」的章節的任何書籍/教程中解釋。

相關問題