gpt4 book ai didi

c++ - 字符串文字的隐式转换

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:30:01 24 4
gpt4 key购买 nike

今天早些时候我尝试编译类似于以下的代码:

class example
{
public:
example(const char (&in_data)[6]);
};

example foo()
{
return "ABCDE";
}

在 GCC 上,它提示返回行中没有转换为示例。我能够在其他地方用代码初始化 example 类型的对象,例如

example bar("ABCDE");

就好了。在 VS2010 中编译时,所有这些都工作正常。

现在,我的问题是,这是否有效,或者这是某种 visual studio 编译器扩展?在我看来,由于非显式构造函数,这应该工作...

我现在没有确切的错误消息,因为我不在工作,但这真的很困扰我。

最佳答案

我看不出隐式转换不起作用的任何原因。尝试使用 gcc、clang 和 EDG,只有 gcc 失败。我猜测这是一个 gcc 错误。也就是说,gcc 似乎热衷于从数组引用中创建 char const*。这段代码

example f()
{
char const (&array)[6] = "abcde";
return array;
}

产生这个错误:

implicit.cpp: In function ‘example f()’:
implicit.cpp:10:12: error: could not convert ‘(const char*)array’ from ‘const char*’ to ‘example’
return array;
^

关于c++ - 字符串文字的隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13486530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com