1

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

1 に答える 1