相关疑难解决方法(0)

在C++ 11中使用数组初始化列表作为临时用户?

我可以使用数组创建一个命名变量,如下所示:

char s[] = {1, 2, 3, 0};
if (strcmp(s, t))
    ...
Run Code Online (Sandbox Code Playgroud)

但是以下不起作用:

if (strcmp(char[]{1,2,3,0}, t))
    ...
Run Code Online (Sandbox Code Playgroud)

有没有办法用初始化列表指定临时的未命名数组?(在这种情况下,字符串文字可以工作,但对于char数组以外的数组?)

更新:

#include <iostream>
#include <cstring>

using namespace std;

typedef char CA[];

int main()
{
        cout << CA{1,2,3, 0} << endl;
}
Run Code Online (Sandbox Code Playgroud)

error: taking address of temporary array(g++-4.7.2 -std=gnu++11)

更新2:

我认为(也许)正在发生的事情是字符串文字被特别祝福为左值,但是临时数组是prvalues,因此你不能接受它们的地址.这是一个疯狂的猜测,我不确定.

更新3:

其实这应该是错的我想:

可以将"数组的NT"或"未知的T的数组"类型的左值或右值转换为"指向T的指针"的prvalue.结果是指向数组的第一个元素的指针.

c++ c++11

20
推荐指数
2
解决办法
7443
查看次数

标签 统计

c++ ×1

c++11 ×1