Как сделать общедоступную переменную из общедоступного класса ссылки в С++?

Как вы позволяете переменной находиться в общедоступной/глобальной области «общедоступного класса ссылок»?
Visual C++ [2010]
В моей основной DLL main.h:

namespace fdll {

 public ref class foo
 {
   public:
     int bar(int num);
  };

}

В моей DLL main.cpp:

#include "main.h"
int fdll::foo::bar(int num)
{
  return num;
}


В другом проекте:

#using <main.dll>
#include "main.h"
fdll::foo f; <--- error wtf
int main()
{
  Console::WriteLine(fdll.bar(2));
  return 0;
}


Выдана ошибка:
ошибка C3145: 'f' : глобальная или статическая переменная может не иметь управляемого типа 'fdll::foo'
не может объявлять глобальную или статическую переменную или член собственного типа который ссылается на объекты в куче gc


person dsrdakota    schedule 02.05.2012    source источник


Ответы (1)


Глобальные переменные не поддерживаются для объектов CLR, как указано здесь.

Создайте глобальный класс и используйте static для имитации глобальной переменной или только объявите переменные CLR в области действия функции.

person deebee    schedule 02.05.2012
comment
Большое спасибо! Несмотря на то, что эта ссылка полезна, я решил изменить свою CLR/DLL на проект статической библиотеки, чтобы решить свои проблемы. Это не мой настоящий код, я привел общий пример для помощи. - person dsrdakota; 06.05.2012