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

1
2
3
4
5
6
7
8
9
10
11
12
13
#pragma once
class CFrameSet
{
public:
    CFrameSet(void);
    CFrameSet(const CFrameSet& dup);
    ~CFrameSet(void);
 
    ...
 
public:
    void operator =(const CFrameSet& dup);
};




FrameSet.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#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)
{
    ...
}


Posted by Kugi
,