为什么我不能将 PictureBox^ 存储在 std::vector 中?

Why can't I store a PictureBox^ in a std::vector?

对于我正在构建的碰撞系统,我需要一个图像向量:

vector<PictureBox^> Wall{ Player1,Wall_1,Wall_2 };

这就是我实例化向量的方式,但没有成功编译。

vector<PictureBox^> Wall;

您可以像这样完美地实例化向量,因为没有向它添加任何内容。

当我尝试用第一个实例编译程序时,这些是我得到的一些错误...

我已经尝试了几乎所有符合标准的容器,例如 list 和 deque,但都没有成功。

有什么想法吗?

您不能将标准 C++ 与 C++/CLI 混合使用,因为它们的类型有特殊要求(比如它们的指针被垃圾收集)。如果要在其中存储 gc-ed 指针,则必须使用它们的特定容器。

例如,通用数组是 List:

List<PictureBox^>^ list = gcnew List<PictureBox^>();