0

VS2005にC++/ CLIクラスライブラリプロジェクトがあり、問題が発生しています。列挙型クラスであるLanguagesというクラスを定義しました。これは次のようになります:

"Language.cpp"
namespace Company
{
    namespace product
    {
        public eunm class Languages : int
        {
            English = 1,
            German = 2,
            //etc for other languages
        };
    }
};

次に、同じ名前空間にあるこれを参照しようとする別のクラスがあります。

"Language.cpp"
namespace Company
{
    namespace product
    {
        public class LanguageConsumer
        {
        public:
            LanguageConsumer()
            {
            }
        public:
            Languages DoSomething(Languages input)
        {
            if (input == Languages::English)
            {
                //Do something and return
            }
        };
    }
};

しかし、私のプロジェクトはコンパイルされません。私が理解できることから、異なるクラスが同じ名前空間にあるとしても、お互いを見ることができません。ヘッダーファイルとヘッダーファイルの#includeが必要になる可能性があると思いますが、C ++ / CLIについて十分に理解していないため(C#のバックグラウンドでCの経験がほとんどない)、多くのことを試しました。私が考えることができるようにさまざまな組み合わせ。私は彼らが何をしているのかを知っている人には非常に明白な何かを見逃していると確信していますが、残念ながら私はそうではありません。

前もって感謝します。

4

1 に答える 1

1

C++/CLI は引き続き C++ のようにコンパイルされ、ファイル ファイルは個別にコンパイルされてからリンクされます。これは、すべてのファイルをまとめてコンパイルする C# とは異なります。コンパイル時にファイルはお互いを認識しないため、コードはコンパイルされません (この列挙型は何ですか?!)。クラスと同じファイル (コンパイル単位) に enum 定義が必要です。

これを行う簡単な方法は、コードを同じファイルに移動することです。ヘッダー ファイルの解決策は、enum 定義をヘッダー ファイルに移動し、それを別のファイルにインクルード (#include) することです。#include は別のファイルのテキストを挿入し、同じ効果をもたらします。

于 2009-04-07T17:14:12.973 に答える