2012-07-21 50 views
0

全局常量不變量的圖書館應該如何定義的類,其中只有全局變量? 我做了這樣的事情:類在CLI C++

public ref class Klient 
{ 
public: 
    Klient(){} 
    // zmienne 
    static array<DWORD,2>^ klienty = gcnew array<DWORD,2>(40,2); 
    static int i = 0; 
    static DWORD pid; 
    static HANDLE handle; 
    static String^ nick; 
    //funkcje 
}; 

但如果我把它給超過1點時,它將無法編譯,並顯示類錯誤的重新定義。

回答

1

你守護你的頭?在Visual Studio中,你應該把這個指令在所有的頭文件的頂部:

#pragma once 

這等同於經典的C++頭文件保護:

#ifndef HEADER_SYMBOL_X 
#define HEADER_SYMBOL_X 

// class declarations go here 

#endif // HEADER_SYMBOL_X 

如果你不保護你的頭, C++/CLI確實會嘗試在每個包含中重新定義你的類。

+0

我做class.cpp文件不class.h – Luke 2012-07-21 14:58:51

+0

但一次的#pragma heped:d THX – Luke 2012-07-21 15:55:10

0

你必須是一個更加清楚一點,並粘貼你的錯誤。同樣,如果你有一個「ref」類,編譯器會爲你生成一個默認的構造函數,所以你不需要編寫一個。

此代碼爲我工作,我能夠靜態int值提取到我的WPF應用程序:

#pragma once 

#include "windows.h" 

using namespace System; 

namespace cppcli 
{ 
    public ref class Klient 
    { 
     public: 
      static array<DWORD,2>^ klienty = gcnew array<DWORD,2>(40,2); 
      static int i = 22; 
      static DWORD pid; 
      static HANDLE handle; 
      static String^ nick; 
    }; 
} 

更新:
注意到,您的評論,是的,你在這裏需要#pragma once。我認爲它在那裏,因爲它是由Visual Studio自動生成的,以及很好的瞭解,它的工作原理:-)

+0

問題是相同的。 「錯誤C2011: 'cppcli :: Klient': '類' 類型重新定義 – Luke 2012-07-21 15:06:16