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

时间:2012-10-25 03:01:28

标签: visual-studio-2010 visual-c++

所以我正在做的是创建一个位图移动的表单,当它们发生碰撞时,它们会“战斗”。位图保存为VBot并继承到子机器人中,以跟踪我构建指针数组的机器人。 VBot和BotContainer是.h和.cpp文件但是当我尝试在Form.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

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

你正在做这样的事情:

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;
    }
};