위임 건축 질문 : 컴파일러 오류 C2039 : '{ctor에가}'로깅의 구성원이 아닌 :: LogManager의 나는 마이크로 소프트의 C++ 2012년 11월 CTP 컴파일러하지 사용하고C++ 위임 생성자와 헤더
Visual Studio 2012의 기본 스크립트이므로 새로운 C++ 기능 (가변적 인 템플릿 등)에 액세스 할 수 있습니다.
네임 스페이스 및 헤더 파일을 사용하여 위임 된 구성을 작동 시키려고합니다 ... Visual Studio 2012에서 아직 구현되지 않은 기본 생성자 상속 기능에 해당되는지 확실하지 않습니다. 그래서 이것이 작동하지 않아야하는 경우 일 수 있습니다.
C++ 11에서 어떻게합니까?
// LogManager.h extract
namespace Logging {
class LogManager
{
private:
static std::wstring defaultFileName;
explicit LogManager(std::wstring logFileName);
explicit LogManager();
~LogManager(void);
}
// LogManager.cpp extract
/********************************************************************
*****/
Logging::LogManager::LogManager(std::wstring fileName)
{}
/********************************************************************
*****/
Logging::LogManager::LogManager()
: LogManager(defaultFileName) // Yields C2664
// : Logging::LogManager::LogManager(defaultFileName) // Yields C2039
// : Logging::LogManager(defaultFileName) // Yields C2614
{}
오류 C2039은 : '{ctor에가}'의 멤버가 아닌 '로그 :: LogManager의'
오류 C2614 : '로그 :: LogManager의'불법 멤버 초기화 '의 LogManager는'아니다 기본 또는 멤버
오류 C2664 : '로그 :: LogManager의 :: LogManager의 (const를 로그 :: LogManager의 &)'할 수없는 변환하는 '표준 : : wstring의' 'const를 로그 :: LogManager의 &'에서 매개 변수 2
Answer : Microsoft에 이미 알려진 버그에 따라 헤더 파일에 명시 적 키워드를 사용할 수 없습니다.
생성자의 첫 번째 서명 만 작동합니다. 해결 방법.
clang과 gcc 모두이 코드를 허용합니다. VS 오류 코드를 제거하고 설명으로 바꿀 수 있습니까? 또한 ** 도대체 [tag : c11]은 여기서 무엇을합니까 ** ** – Griwes
(3 버전과 같이) 작동해야합니다 : http://stackoverflow.com/a/14183972/14065를 참조하면 VS2012가 지원해야하는 것처럼 보입니다. 그것 : http://stackoverflow.com/a/7422058/14065 –
@ LokiAstari 당신이 당신이 할 수 있다는 말인가요? –