委托构建问题: 编译器错误 C2039:“{ctor}”不是 Logging::LogManager 的成员
我正在使用 Microsoft 的C++ 2012 年 11 月 CTP 编译器,而不是 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}”:不是“Logging::LogManager”的成员
错误 C2614:“Logging::LogManager”:非法成员初始化:“LogManager”不是基础或成员
错误 C2664:“Logging::LogManager::LogManager(const Logging::LogManager &)”:无法将参数 2 从“std::wstring”转换为“const Logging::LogManager &”
回答:: 根据 Microsoft 已知的已知错误,不能在头文件中使用显式关键字。
只有构造函数的第一个签名才能使用这个.. 解决方法。