C++ 如何在C++;物体
阅读后,特别是: 但不要忽视显而易见的解决方案: int myArray[10]={5,5,5,5,5,5,5,5,5} 我试过这样的方法:C++ 如何在C++;物体,c++,arrays,class,initialization,C++,Arrays,Class,Initialization,阅读后,特别是: 但不要忽视显而易见的解决方案: int myArray[10]={5,5,5,5,5,5,5,5,5} 我试过这样的方法: #include <iostream> class Something { private: int myArray[10]; public: Something() { myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }; } int ShowThingy(int what) {
#include <iostream>
class Something {
private:
int myArray[10];
public:
Something() {
myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
}
int ShowThingy(int what) {
return myArray[what];
}
~Something() {}
};
int main () {
Something Thing;
std::cerr << Thing.ShowThingy(3);
}
这在我看来很奇怪,在编译器看来也是如此:
..\src\Something.cpp: In constructor 'Something::Something()':
..\src\Something.cpp:11:44: error: cannot convert '<brace-enclosed initializer list>' to 'int*' in assignment
与:
我一直做得很好,学习了不起作用的东西,但学习起作用的东西却不太好
那么,如何为类中的数组使用初始化列表{value,value,value}
一段时间以来,我一直在想如何实现这一点,但我非常困惑,我需要为我的应用程序创建许多这样的列表。除非我弄错了,否则只有在声明过程中初始化变量时才允许使用初始值设定项列表,这就是名称。您不能像在大多数示例中一样,将初始值设定项列表分配给变量 在上一个示例中,您试图将静态初始化添加到非静态成员。如果希望数组是类的静态成员,可以尝试以下操作:
class Derp {
private:
static int myArray[10];
}
Derp::myArray[] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
如果要添加类成员,可以尝试创建静态数组
const
,并将其复制到构造函数中的成员数组中。需要在构造函数初始化列表中初始化数组
#include <iostream>
class Something {
private:
int myArray[10];
public:
Something()
: myArray { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }
{
}
int ShowThingy(int what) {
return myArray[what];
}
~Something() {}
};
int main () {
Something Thing;
std::cerr << Thing.ShowThingy(3);
}
#包括
分类{
私人:
int-myArray[10];
公众:
某物
:myArray{5,5,5,5,5,5,5,5,5}
{
}
int ShowThingy(int what){
返回myArray[what];
}
~Something(){}
};
int main(){
某物;
STR::你能做到吗?非常酷,标准是什么?“C++中添加了德雷克曼”11@derekerdmanngcc 4.5.1它。我知道VC++即使在即将发布的VC11版本中也不确定编译器。@shengy-我相信是的。至少,您可以创建一个静态常量,在创建新实例时可以复制。@Prætor伊恩,Irc,从我的其他答案之一,使用括号和初始化列表的评论是不正确的,尽管对GCC进行了精细的编译。C++中的原始数组的一个愚蠢的事情是它们不能直接分配。(不允许使用以下代码。<代码> int A(10),B(10);A= B;< />代码>由于C++11在本文中被提到,我将指出std::array:std::array a={5,5,5,5,5,5,5};std::array b=a;std::array C;C.fill(5);
从技术上讲,您可以将初始值设定项列表分配给C++11中std::initializer_list
类型的变量。
private:
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
..\src\Something.cpp:6:20: error: a brace-enclosed initializer is not allowed here before '{' token
..\src\Something.cpp:6:51: sorry, unimplemented: non-static data member initializers
..\src\Something.cpp:6:51: error: 'constexpr' needed for in-class initialization of static data member 'myArray' of non-integral type
class Derp {
private:
static int myArray[10];
}
Derp::myArray[] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
#include <iostream>
class Something {
private:
int myArray[10];
public:
Something()
: myArray { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }
{
}
int ShowThingy(int what) {
return myArray[what];
}
~Something() {}
};
int main () {
Something Thing;
std::cerr << Thing.ShowThingy(3);
}