2012-07-21 28 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