c++ - 如何在 C++ 中从 "public ref class"创建一个公共(public)变量?

标签 c++ class visual-c++ public ref

您如何允许变量处于“公共(public)引用类”的公共(public)/全局范围内?
视觉 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 堆中对象的 native 类型的成员

最佳答案

CLR 对象不支持全局变量,如所述 here .

创建一个全局类并使用 static 模拟全局变量或仅在函数范围内声明 CLR 变量。

关于c++ - 如何在 C++ 中从 "public ref class"创建一个公共(public)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10406508/

相关文章:

c++ - 在 C++ 中交换映射的键和值

C++静态模板子类

c++ - 在 windbg 的用户模式转储中查找 hwnd 信息

c - Run-Time Check Failure #2 - s(Microsoft Visual C++ 2015(社区版)上的C语言)

visual-c++ - VC++编译时找不到exe

c++ - 仅报告一次错误

c++ - 如何确保 CMakeLists.txt 和 FindXXX.cmake 的编码风格一致

c++ - 我什么时候需要实现 operator [] ?

java - class.getResource() (Java) 的上下文是什么?

php - 如何在 PHP 中实现 __isset() 魔术方法?