在编译跨平台代码时我遇到了c风格的演员,当我为UWP编译时会出现问题,但是当我从Visual Studio远程编译到运行Linux的Raspberry时它会起作用。
我只想写这个(简化为最小问题再现):
MyClass str = (MyClass) "A beautiful const char[27]";
编译器在为UWP运行时抛出此错误:
error C2440: 'type cast': cannot convert from 'const char [27]' to 'MyClass'
note: Conversion requires a constructor or user-defined-conversion operator, which can't be used by const_cast or reinterpret_cast
我不明白“MyClass”中缺少什么,而且它适用于Linux。
以下是MyClass定义的摘录:
class MyClass{
public:
template<size_t N>
inline MyClass(const char(&s)[N]) { } //I do something in real life ;-)
}
如何让编译器找到一个好的转换解决方案呢?
经过一些研究后编辑:
正如我在评论中所述,问题最终没有链接到
template<size_t N>
inline MyClass(const char(&s)[N]){}
这个构造函数按原样工作,我的问题在UWP代码中更深入,我会写另一个问题,因为它离这个原始问题和标题太远了。
再次感谢您的帮助