Development/Failure Log
복사 생성자를 사용할 수 없거나 복사 생성자가 'explicit'으로 선언되었습니다.
Kugi
2012. 11. 13. 18:03
MFC로 UI를 만들다가
내가 만든 클래스로 std::vector 를 이용하려던 중
c:\program files (x86)\microsoft visual studio 10.0\vc\include\xmemory(48): error C2558: class 'CFrameSet' : 복사 생성자를 사용할 수 없거나 복사 생성자가 'explicit'으로 선언되었습니다.
이런 에러가 뜬다. 여기서 'CFrameSet'은 내가 만든 클래스의 이름이다.
vector를 쓰기 위해 복사생성자를 만들어두긴 했는데 깜빡 잊고 파라미터에 const를 빼먹은 것이 문제였다.
FrameSet.h
#pragma once class CFrameSet { public: CFrameSet(void); CFrameSet(const CFrameSet& dup); ~CFrameSet(void); ... public: void operator =(const CFrameSet& dup); };
FrameSet.cpp
#include "StdAfx.h" #include "FrameSet.h" CFrameSet::CFrameSet(void) : ... { ... } CFrameSet::CFrameSet(const CFrameSet& dup) { *this = dup; } CFrameSet::~CFrameSet(void) { ... } void CFrameSet::operator =(const CFrameSet& dup) { ... }