Пространство имен не распознается в C ++ / CLI - PullRequest
2 голосов
/ 14 июля 2011

Я недавно задал этот вопрос: создать пространство имен в c ++ / cli? и поэтому я пытаюсь создать свое собственное пространство имен в c ++ / cli.

Но когда я использую одно и то же пространство имен в двух отдельных файлах (.cpp), пространство имен явно не распознается как одно и то же, потому что я получаю ошибки, когда пытаюсь сослаться на другой класс в другом файле.

Вот в основном то, что у меня есть:

Pets.cpp:

namespace Animals
   {
   public ref class Pets 
     {
     public:
        List<Dog> ^vDogs;

     Pets::Pets()
        {
        vDogs = gcnew List<Dog^>();
        }

     void Pets::DoSomething()
        {
        }
     };
   }

Dog.cpp:

namespace Animals
   {
   public ref class Dog 
     {

     Dog::Dog()
        {
        }

     void Dog::DoSomething()
        {
        }
     };
   }

Другая информация:

1) Файлы находятся в той же папке 1018 *

2) Файлы были добавлены в существующее решение в другой папке

3) Я также пытался using namespace Animals в любом файле, но я получаю сообщение об ошибке, говоря, что пространство имен не существует.

4) Я использую Visual Studio 2010 (на всякий случай, если у кого-то есть способ исправить, но мне нужно сделать что-то конкретное в VS)

Итак, мой вопрос: что мне нужно сделать, чтобы пространство имен было распознано?

Пожалуйста, дайте мне знать, какая другая информация необходима для решения проблемы.

Заранее спасибо за ваше время и терпение! :)

1 Ответ

5 голосов
/ 14 июля 2011

Компилятор C ++ / CLI застрял с моделью сборки традиционных компиляторов C и C ++. Сформулировано в то время, когда килобайт памяти занимал столько же места, сколько обувная коробка. Это однопроходный компилятор, который обрабатывает один файл .cpp за раз. С компоновщиком, чтобы склеить кусочки.

Это означает, что вам придется использовать традиционные заголовочные файлы для объявления ваших классов и директиву #include в верхней части файла с исходным кодом, чтобы включить его.

...