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