C++ c++;Windows Universal中的默认参数错误

C++ c++;Windows Universal中的默认参数错误,c++,windows,win-universal-app,C++,Windows,Win Universal App,代码行(trace)对于WinDesktop、Android、iOS来说编译得很好,但对于Windows Universal来说就不行了。这是我自己的弦乐课。数组和字符指针一直是相同的。如果我尝试为wchar_t数组添加一个构造函数,它会立即显示我已经有了该构造函数。我错过了什么 namespace Couloir { class String { private: wstring Value; public: Strin

代码行(trace)对于WinDesktop、Android、iOS来说编译得很好,但对于Windows Universal来说就不行了。这是我自己的弦乐课。数组和字符指针一直是相同的。如果我尝试为wchar_t数组添加一个构造函数,它会立即显示我已经有了该构造函数。我错过了什么

namespace Couloir
{
   class String
   {
      private:
        wstring Value;

       public:
         String();
         String( const String& cs );
         String( String&& cs );
         String( const wstring& );
         String( wstring&& );
         String( const wchar_t* );

         void trace( const String& contextualFormat = L"\n\r%s\n\r" ) const;
         //....
   };
}
错误:

Error   C2440   'default argument': cannot convert from 'const wchar_t [7]' to 'const Couloir::String &' 
更新:关闭/ZW(使用Windows运行时扩展)不会导致错误/警告。为什么会这样?我需要把它打开,这样才能在酒鬼世界里活得更充实


更新2:关闭/ZW(修复所有错误)并删除常量(即无效跟踪(字符串和上下文格式=L“\n\r%s\n\r”)常量),相同的错误会返回。这就像/ZW导致const关键字不可见一样?

这显然是一个编译器错误报告错误。通过添加命名空间修复了该问题:

void trace( const Couloir::String& contextualFormat = L"\n\r%s\n\r" ) const;

错误是它报告了“const Couloir::String&”,这表明当它报告错误时,它知道该字符串引用了Couloir::String。但是,在分析错误时,它认为是Platform::String。

您缺少一些源代码来获取帮助。:)什么是
Couloir::String
?bash0r,感谢您的回复。您还希望看到什么?您正在为常量引用分配一个
常量wchar\t[7]
值。没有对象创建。@SimonKraemer,你有什么建议?以下内容未修复该错误<代码>无效跟踪(字符串和上下文格式=L“\n\r%s\n\r”)常量请记住,除了Clang 3.6之外,同一个编译器(msvc)在为WinDesktop编译时也对这个LOC感到满意。我比较了编译器选项,但没有发现显著差异。