0

应该如何定义只有全局变量的类?我做了这样的事情:

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 次,它将不会编译并显示类错误的重新定义。

4

2 回答 2

1

你有保护你的头球吗?在 Visual Studio 中,您应该将此指令放在所有头文件的顶部:

#pragma once

这相当于经典的 C++ 标头保护:

#ifndef HEADER_SYMBOL_X
#define HEADER_SYMBOL_X

 // class declarations go here

#endif // HEADER_SYMBOL_X

如果你不保护你的标题,C++/CLI 确实会尝试在每个包含上重新定义你的类。

于 2012-07-21T14:55:54.913 回答
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 自动生成的,很高兴知道它可以工作:-)

于 2012-07-21T13:18:02.910 回答