我从 Visual Studio 2010 升级到 Visual Studio 2012。我的解决方案在 Visual Studio 2010 中构建良好。但是在 Visual Studio 2012 中,启用 CLR 的 C++ 项目抛出 c2248 'CObject::CObject' :无法访问在类'CObject'中声明的私有成员从下面的出口类。如果我为 CParmArray 注释掉 AFX_CLASS_EXPORT,则项目编译不会出错。或者,如果我关闭 CLR 支持,它也可以无错误地编译。但这些不是选项,因为解决方案中的其他项目在构建时会出现链接错误。
Visual Studio 2012 中发生了哪些可能导致问题的更改?如何纠正错误?
我很感激任何建议。
编译器输出:
1>C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\afxtempl.h(262): error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject'
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\afx.h(559) : see declaration of 'CObject::CObject'
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\afx.h(534) : see declaration of 'CObject'
1> This diagnostic occurred in the compiler generated function 'CArray<TYPE,ARG_TYPE>::CArray(const CArray<TYPE,ARG_TYPE> &)'
1> with
1> [
1> TYPE=int *,
1> ARG_TYPE=int *&
1> ]
代码:
class AFX_CLASS_EXPORT CParmArray : public CArray<int, int* &>
{
public:
CParmArray();
CParmArray(const CParmArray& testArray);
void operator=(const CParmArray& testArray);
virtual ~CParmArray();
};