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

但是我的项目没有编译。据我所知,即使认为它们在同一个命名空间中,不同的类也看不到对方。我假设我可能需要头文件和头文件的#includes,但我对 C++/CLI 的了解不够确定(我来自 C# 背景,几乎没有任何 C 经验)并且我尝试过很多我能想到的不同组合。我敢肯定,对于任何知道自己在做什么的人来说,我都遗漏了一些非常明显的东西,但可惜我没有。

提前致谢。

4

1 回答 1

1

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

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

于 2009-04-07T17:14:12.973 回答