VS2005.NET项目中的内部引用

时间:2009-04-07 17:01:01

标签: c++-cli

我在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经验)我尝试了很多我能想到的不同组合。我敢肯定,对于任何知道自己在做什么的人来说,我都错过了一些非常明显的东西,但我不知道。

提前致谢。

1 个答案:

答案 0 :(得分:1)

C ++ / CLI仍然像C ++一样编译,文件文件单独编译然后链接在一起。这与将所有文件编译在一起的C#不同。在编译时,文件彼此不了解,因此代码无法编译(这个枚举是什么?!)。您需要在与该类相同的文件(编译单元)中使用枚举定义。

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