2009-04-07 18 views
0

VS2005にC++/CLIクラスライブラリプロジェクトがありますが、これにはいくつか問題があります。私はenumクラスであるLanguagesというクラスを定義しました。これは次のようになります。私のプロジェクトをコンパイルdoensn'tしかしVS2005.NETプロジェクトの内部参照

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

:私は、同じ名前空間に住んで参照これにしようとする別のクラスを持っている

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

。私は、異なるクラスが同じ名前空間にあると思っていても、お互いを見ることはできません。私はヘッダーファイルとヘッダーファイルの#includesが必要かもしれないと仮定しますが、私はちょうどC++/CLIについて確かに知りません(C言語の経験はほとんどありません)私が考えることができるように異なる組み合わせ。彼らが何をやっているのか分かっている人には、何かを分かりにくいものにしています。

ありがとうございます。

答えて

1

C++のようにC++/CLIをコンパイルすると、ファイルファイルが別々にコンパイルされ、リンクされます。これは、すべてのファイルを一緒にコンパイルするC#とは異なります。コンパイル時に、ファイルは互いに知りませんので、コードはコンパイルされません(このenumは何ですか?)。クラスと同じファイル(コンパイル単位)に列挙型定義を持たせる必要があります。

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

関連する問題