我想初始化数组car.places [2] [3] 但阵列中总是为零。 请有人能告诉我我做错了什么, 这是代码:
#include <iostream>
#include <string>
using namespace std;
class reserv
{
public:
int places[2][3];
} car;
int main () {
car.places[2][3] = (
(1, 2, 3),
(4, 5, 6)
);
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
cout << i << "," << j << " " << car.places[i][j] << endl;
}
}
return 0;
}
我从编译器得到这个警告:
>g++ -Wall -pedantic F_car_test.cpp
F_car_test.cpp: In function 'int main()':
F_car_test.cpp:16:11: warning: left operand of comma operator has no effect [
-Wunused-value]
(1, 2, 3),
^
F_car_test.cpp:16:14: warning: right operand of comma operator has no effect
[-Wunused-value]
(1, 2, 3),
^
F_car_test.cpp:17:11: warning: left operand of comma operator has no effect [
-Wunused-value]
(4, 5, 6)
^
F_car_test.cpp:17:14: warning: right operand of comma operator has no effect
[-Wunused-value]
(4, 5, 6)
^
提前致谢,
答案 0 :(得分:1)
在没有循环的声明之后你不能这样做。
以下是如何在循环中执行此操作:
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
car.places[i][j] = 1 + 3 * i + j;
}
}
答案 1 :(得分:1)
一旦创建了struct / class的对象,就无法初始化;出于某种原因,它被称为初始化。以这种方式初始化
#include <iostream>
struct reserv
{
int places[2][3];
} car = {{{1, 2, 3}, {4, 5, 6}}};
int main()
{
for(int i = 0; i < 2; ++i)
{
for(int j = 0; j < 3; ++j)
{
std::cout << i << "," << j << " " << car.places[i][j] << std::endl;
}
}
}
答案 2 :(得分:0)
此记录
car.places[2][3]
表示类库[2] [3]的数据成员位置(或更准确地说是对象车)。
数组已经创建为您在全局名称空间中定义的对象车的一部分。
改为写
class reserv
{
public:
int places[2][3];
} car = { {
{1, 2, 3},
{4, 5, 6}
} };
答案 3 :(得分:0)
在C ++中,您只能在声明时使用初始化列表初始化数组。因为在这种情况下你的数组是一个类成员,你可以(并且应该)在构造函数中执行它。
reserv::reserv():places{{1,2,3},{4,5,6}}{};
您必须启用std=c++0x
才能使用此功能。