我需要在我的代码中使用msclr,但我还需要使用另一个也使用msclr的类“ClassOne”。我得到'class'类型重定义错误和基类未定义错误。我不知道为什么会这样。
两个类都在同一个项目中。当我做#using“ClassOne.obj”
时出现错误我该如何避免这种情况?
ClassOne.h:
#ifndef _CLASSONE_H
#define _CLASSONE_H
ref class ClassOne
{
public:
ClassOne();
};
#endif
ClassOne.cpp:
#include "ClassOne.h"
#include <msclr/marshal_cppstd.h> // For msclr::interop::marshal_as
ClassOne::ClassOne()
{
}
ClassTwo.h:
#ifndef _CLASSTWO_H
#define _CLASSTWO_H
#using "ClassOne.obj"
public ref class ClassTwo
{
public:
ClassOne a;
ClassTwo();
};
#endif
ClassTwo.cpp:
#include "ClassTwo.h"
#include <msclr/marshal_cppstd.h>
ClassTwo::ClassTwo()
{
msclr::interop::marshal_as<std::wstring>(L"text");
}
错误:
查看屏幕截图:Screenshot
答案 0 :(得分:0)
#using "ClassOne.obj"
我不知道这是什么。我以前从未见过obj文件中的using指令;我不确定目的是什么。坦率地说,我很惊讶您在#using
行没有收到错误。
如果您想引用ClassOne
中的ClassTwo
,请包含头文件,就像常规C ++一样。
#using "ClassOne.h"