我在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
}
};
}
};
但是我的项目不能编译。从我可以弄清楚的是,不同的类甚至认为它们在相同的命名空间中也看不到对方。我假设我可能需要头文件和头文件的#includes,但我只是不太了解C ++ / CLI(我来自C#背景,几乎没有任何C经验)我尝试了很多我能想到的不同组合。我敢肯定,对于任何知道自己在做什么的人来说,我都错过了一些非常明显的东西,但我不知道。
提前致谢。
答案 0 :(得分:1)
C ++ / CLI仍然像C ++一样编译,文件文件单独编译然后链接在一起。这与将所有文件编译在一起的C#不同。在编译时,文件彼此不了解,因此代码无法编译(这个枚举是什么?!)。您需要在与该类相同的文件(编译单元)中使用枚举定义。
执行此操作的简单方法是将代码移动到同一文件中。头文件解决方案是将枚举定义移动到头文件中,然后将其包含在另一个文件中(#include)。 #include插入另一个文件的文本,效果相同。