Внутренние ссылки в проекте VS2005.NET - PullRequest
0 голосов
/ 07 апреля 2009

У меня есть проект библиотеки классов C ++ / CLI в VS2005, с которым у меня возникли некоторые проблемы. Я определил класс с именем Languages, который является классом enum. который выглядит так:

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

Однако мой проект не компилируется. Из того, что я могу понять, разные классы не могут видеть друг друга, даже если они находятся в одном и том же пространстве имен. Я предполагаю, что мне могут понадобиться заголовочные файлы и #include для заголовочных файлов, но я просто не знаю достаточно о C ++ / CLI, чтобы быть уверенным (я пришел из C # фона практически без опыта C), и я пробовал столько разные комбинации, как я могу думать. Я уверен, что упускаю что-то очень очевидное для любого, кто знает, что они делают, но, увы, я не знаю.

Заранее спасибо.

1 Ответ

1 голос
/ 07 апреля 2009

C ++ / CLI по-прежнему компилируется как C ++, файловые файлы компилируются отдельно, а затем связываются вместе. Это отличается от C #, который компилирует все файлы вместе. Во время компиляции файлы не знают друг о друге, поэтому код не компилируется (что это за перечисление ?!). Вы должны иметь определение enum в том же файле (единица компиляции), что и класс.

Простой способ сделать это - переместить код в тот же файл. Решение файла заголовка состоит в том, чтобы переместить определение enum в файл заголовка и затем включить его (#include) в другой файл. #include вставляет текст другого файла, давая тот же эффект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...