如何避免使用const构造函数的非托管类的C ++ / CLI断言?

时间:2011-09-04 15:05:23

标签: visual-c++ c++-cli

这是一个棘手的问题:

我有一个带有非托管类的C ++ CLI项目,该类使用外部库注册回调,并使用指向非托管数据类的指针调用此回调。

当我尝试通过回调读取数据类中收到的成员时,我在文件:dbgheap.c,line:1473上得到_crtIsValidHeapPointer(pUserData)的断言。

我看到数据类有复杂的字段,不仅是blittable字段,而且我在检索复杂字段时得到断言。我认为这可能与其构造函数中具有const引用参数的复杂字段有关。

CLI是否存在调用const引用的问题?

只是试一试 - 我试着在非托管堆上调用构造函数并得到相同的断言:

CStructure* struct = new CStructure(); // I got assertion here

构造函数如下所示:

class CStructure
{

    public:
        CStructure(const CHelper& helperId = CHelper::nullId(),
                   int nInstance = NullInstance);
};

如果出现问题,我该如何避免这种情况?

0 个答案:

没有答案