2009-04-07 56 views
0

我在VS2005中有一个C++/CLI类库项目,我遇到了一些问题。我定义了一个名为Languages的类,它是一个枚举类。它看起来像这样:在VS2005.NET项目中的内部引用

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

但是我的项目doensn't编译。从我可以看出,不同类别之间甚至认为它们在相同的命名空间中都看不到。我假设我可能需要头文件和头文件包含#includes,但我只是不确定C++/CLI足够肯定(我来自几乎没有任何C经验的C#背景),并且我尝试了尽可能多的我可以想到不同的组合。我敢肯定,我错过了对任何知道自己在做什么的人都非常明显的事情,但是我不知道。

在此先感谢。

回答

1

C++/CLI仍然像C++一样编译,文件文件被单独编译,然后链接在一起。这与编译所有文件在一起的C#不同。在编译时,这些文件并不知道彼此,所以代码不能编译(这是什么枚举?!)。您需要在同一文件(编译单元)中具有该类的枚举定义。

执行此操作的简单方法是将代码移到同一个文件中。头文件解决方案是将枚举定义移动到头文件中,然后将其包含在另一个文件中(#include)。 #include插入另一个文件的文本,给出相同的效果。

相关问题