Visual studio 2010 托管类型混合类型不受支持的Visual C++;

Visual studio 2010 托管类型混合类型不受支持的Visual C++;,visual-studio-2010,visual-c++,Visual Studio 2010,Visual C++,所以我所做的是创建一个位图移动的形式,当它们碰撞时,它们会“战斗”。位图保存在VBot中并继承到子机器人中,为了跟踪机器人,我构建了一个指针数组。VBot和BotContainer是.h和.cpp文件,但当我试图以.h格式创建专用BotContainer以跟踪机器人时,会显示错误消息 错误1错误C4368:无法将“VList”定义为托管“Prog3::Form1”的成员:不支持混合类型c:\users\duerst\documents\visual studio 2010\projects\pr

所以我所做的是创建一个位图移动的形式,当它们碰撞时,它们会“战斗”。位图保存在VBot中并继承到子机器人中,为了跟踪机器人,我构建了一个指针数组。VBot和BotContainer是.h和.cpp文件,但当我试图以.h格式创建专用BotContainer以跟踪机器人时,会显示错误消息

错误1错误C4368:无法将“VList”定义为托管“Prog3::Form1”的成员:不支持混合类型c:\users\duerst\documents\visual studio 2010\projects\prog 3\prog 3\Form1.h 65 1 prog 3


我能做些什么来解决这个问题

您正在做这样的事情:

class BotContainer
{
    ...
};

public ref class Form1
{
private:
    BotContainer VList;

    ...
};
这是非法的,因为托管类型不能有非托管类型的成员(反之亦然)。您需要使用指向BotContainer的指针,该指针在构造函数中实例化,在析构函数中删除:

public ref class Form1
{
private:
    BotContainer* VList;

public:
    Form1()
    {
        VList = new BotContainer();
        ...
    }

    ~Form1()
    {
        delete VList;
    }
};

你正在做这样的事情:

class BotContainer
{
    ...
};

public ref class Form1
{
private:
    BotContainer VList;

    ...
};
这是非法的,因为托管类型不能有非托管类型的成员(反之亦然)。您需要使用指向BotContainer的指针,该指针在构造函数中实例化,在析构函数中删除:

public ref class Form1
{
private:
    BotContainer* VList;

public:
    Form1()
    {
        VList = new BotContainer();
        ...
    }

    ~Form1()
    {
        delete VList;
    }
};