这个问题不太清楚你的意思一行,所以我将开始提供建议:
使用聚合初始化:
board fields[10][10] = {
{ {"ExampleName","This is an example",3,4,5,6}, // Element 0,0
{"ExampleName","This is an example",3,4,5,6}, // Element 0,1
// ...
},
{ {"ExampleName","This is an example",3,4,5,6}, // Element 1,0
// ...
}
};
这是您可以获得的最接近单线的,它是有效的 C++(在所有变体中,假设它board
是一个聚合,因此board[10][10]
也是一个聚合),但它可能很难阅读。
下一步是更接近您正在做的事情,即初始化每个元素(而不是数组),因为在 C++11 中,您可以使用与您建议的相同类型的初始化。在 C++03 中,您需要通过构造函数来执行此操作(注意,这将更改类型的属性,并且您需要为数组创建默认构造函数):
struct board {
string name;
string desc;
int nval;
int sval;
int eval;
int wval;
board() {} // [*]
board( const char* name, const char* desc, int n, int s, int e, int w )
: name(name), desc(desc), nval(n), sval(s), eval(e), wval(w)
{}
};
board fields[10][10]; // [*] this requires the default constructor [*]
fields[5][6] = board("ExampleName","This is an example",3,4,5,6);
或者通过一个函数:
board create_board( const char* name, const char* desc, ... ) {
board res = { name, desc, ... };
return res;
}
请注意,在这两种情况下,数组中的元素都会在数组初始化期间进行初始化,然后在它们之上复制一个新对象。