오류 : 삭제 된 기능 사용
gcc4.6으로 작업 할 때 이전에 본 적이없는 다음 오류가 발생합니다.
error: use of deleted function
‘GameFSM_<std::array<C, 2ul> >::hdealt::hdealt()’ is implicitly deleted because the default definition would be ill-formed:
uninitialized non-static const member ‘const h_t FlopPokerGameFSM_<std::array<C, 2ul> >::hdealt::h’
편집 :이 부스트 MSM : 부스트 웹 페이지를 사용하는 코드의 일부에서 나옵니다.
Edit2 : = delete()
소스 코드 어디에도 사용할 수 있습니다.
일반적 으로이 오류는 무엇을 의미합니까? 현재 유형의 오류가 발생하면 무엇을 찾아야합니까?
오류 메시지는 기본 생성자 가 암시 적으로 삭제 명확하게 나타냅니다 . 그 이유는 다음과 가변적입니다. 클래스에 기본 ctor에 의해 초기화되지 않는 정적 정적 변수가 포함되어 있습니다.
class X {
const int x;
};
이후 X::x
입니다 const
하지만 (그것이 POD 타입이기 때문에) 행동의 ctor는 일반적으로 초기화해야합니다. 따라서 기본 ctor를 얻으려면 직접 정의해야합니다 (그리고 초기화해야합니다 x
). 참조 인 멤버로 동일한 종류의 상황을 얻을 수 있습니다.
class X {
whatever &x;
};
둘 다 동일하게 생성되는 할당 연산자의 암시 적도 있다는 점에 주목할 가치가 있습니다. 암시 적 할당 연산자는 일반적으로 멤버 단위 할당을 수행하지만 const 멤버 또는 참조 멤버를 사용하면 멤버를 할당 할 수 없기 때문에 그렇게 할 수 없습니다. 할당 작업을 수행 할 고유 한 할당 연산자를 작성해야합니다.
정적 const
멤버가 일반적으로 정적 이어야 하는 이유입니다. 할당을 수행 할 때 어쨌든 const 멤버를 할당 할 수 없습니다. 일반적인 경우 모든 인스턴스는 동일한 값을 가지 공유 모두 사용하는 값을 변수의 사본을 많이 사용하는 것이 좋습니다.
물론 다른 값을 가진 인스턴스를 만들 수도 있습니다. 예를 들어 개체를 만들 때 값을 전달하는 두 개의 다른 개체가 있습니다. 그러나 스와핑과 같은 작업을 시도하면 const 멤버는 스왑되는 대신 원래 값을 유지합니다.
로 함수를 사용하고 있습니다 deleted
.
예 :
int doSomething( int ) = delete;
= C ++ 0x의 새로운 기능을 삭제합니다. "이 함수가 즉시 중지되고"이 함수가 중지되어야 함을 의미합니다.
이 오류가 표시 될 때 대한 함수 선언을 확인해야합니다 =delete
.
C ++ 0X 도입 된이에 새로운 기능 현관에 대해 자세히 알아 보려면 여기를 확인 하십시오 .
gcc 4.6은 삭제 된 함수의 새로운 기능을 지원합니다.
hdealt() = delete;
기본 생성합니다.
여기에서 컴파일러는 기본 생성자가 생성 할 수 =delete
있습니다.
현재 C ++ 0x 표준에서는 삭제 구문을 사용하여 기본 생성 명시 적으로 사용할 수 있습니다.
MyClass() = delete;
Gcc 4.6 은이 구문을 지원하는 첫 번째 버전을 출시합니다.
이러한 시도해 주시겠습니까? gcc-4.6이 없습니다.
class C
{
public:
const int x ;
} ;
int main()
{
C c ;
}
여기에있는 사람들이 옳다면 오류 메시지를 제공해야합니다.
gcc 4.6에서 gcc 4.8로 전환하면 문제가 해결되었습니다.
추상 클래스에서 상속하고 내 하위 클래스에서 모든 순수 가상 메서드를 구현하지 않을 때가 오류가 발생했습니다.
참고 URL : https://stackoverflow.com/questions/5966698/error-use-of-deleted-function
'IT' 카테고리의 다른 글
클래스 정의에서 정적 const 정수 멤버 정의 (0) | 2020.08.19 |
---|---|
동일한 컴퓨터에서 여러 버전의 Google 크롬을 사용할 수 있습니까? (0) | 2020.08.19 |
Asyncio.gather 대 asyncio.wait (0) | 2020.08.19 |
x86이 못생긴 이유는 무엇입니까? (0) | 2020.08.19 |
“BEGIN_OBJECT가 필요하지만 1 행 1 열에서 STRING이었습니다.” (0) | 2020.08.19 |