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
};

しかし、それを2回以上含めると、コンパイルされず、クラスエラーの再定義が表示されません。

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 に答える