Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 字符数组在c+中不工作+;_C++_Arrays_Char - Fatal编程技术网

C++ 字符数组在c+中不工作+;

C++ 字符数组在c+中不工作+;,c++,arrays,char,C++,Arrays,Char,我有以下代码: template <typename M> struct Matrix { Matrix(int size);//(int x = defaultRows, int y = defaultCols); ~Matrix(); int rowSize; int colSize; char alpha[4]; int getSize() const; void displayAll(); M getElement(int x, int y); M** aMatrix;

我有以下代码:

template <typename M>
struct Matrix
{
Matrix(int size);//(int x = defaultRows, int y = defaultCols);
~Matrix();

int rowSize;
int colSize;
char alpha[4];

int getSize() const;
void displayAll();
M getElement(int x, int y);

M** aMatrix;
};


template <typename M>
Matrix<M>::Matrix(int size)
{
alpha = {'a', 'b', 'c', 'd'};

rowSize = size;
colSize = size + 1;
aMatrix = new M*[rowSize];

srand(time(NULL)); //set the random seed

for(int r = 0; r < size; r++)
{
    aMatrix[r] = new M[colSize];
    for(int c = 0; c < colSize; c++)
    {
        int randomNum = rand() % 19 + (-9);
        aMatrix[r][c] = randomNum;
    }
}
}
模板
结构矩阵
{
矩阵(int size);/(int x=defaultRows,int y=defaultCols);
~Matrix();
整数行大小;
int colSize;
char-alpha[4];
int getSize()常量;
void displayAll();
M getElement(intx,inty);
M**aMatrix;
};
模板
矩阵::矩阵(整数大小)
{
alpha={'a','b','c','d'};
rowSize=大小;
colSize=size+1;
aMatrix=新的M*[行大小];
srand(time(NULL));//设置随机种子
对于(int r=0;r
我不知道为什么,但当我试图编译程序时,我总是出错。这与我的“alpha”字符数组有关(当我对它进行注释时,它可以正常工作)

我看不出有什么问题

错误是: 错误3错误C2143:语法错误:缺少“;”在“}”之前

错误2错误C2143:语法错误:缺少“;”在“{”之前

错误1错误C2059:语法错误:“{”

不要以为我错过了什么?我??/P> < P>你不能在C++中这样做(无论如何都不会有时间):< /P> 它看起来像初始值设定项,但不是。请尝试:

alpha[0] = 'a';
alpha[1] = 'b';
alpha[2] = 'c';
alpha[3] = 'd';
编辑 <>这并不会对你有很大帮助,但是C99(和一些C++编译器一样,作为扩展)支持:

alpha = (char[]){'a', 'b', 'c', 'd'};
数组只能在其定义内以这种方式初始化。当数组是类的成员时,不能使用这种形式的初始化。必须以常规方式进行初始化,每次一个元素:

alpha[0] =  'a';
alpha[1] =  'b';
alpha[2] =  'c';
alpha[3] =  'd';

<>你不能用这样的方式设置数组。C++中的C++是一个不幸的问题,但是现在你必须做一些类似的事情:

alpha[0] = 'a';
alpha[1] = 'b';
...
或者你可以

Matrix<M>::Matrix(int size)
{
    char alpha_init[4] = {'a','b','c','d'};
    std::copy(alpha_init,alpha_init+4,alpha);

正如其他人指出的,这个语法只会初始化数组,到构造函数体时,数组已经初始化。C++ 11有一个很好的语法,允许你在初始化列表中初始化数组,但是对于C++编译器可能还是不可用。 另一个的建议行得通,但我不会建议他们。它们太冗长了,大部分看起来有点难看,而且它们不会与任意大的数组一起工作,因为在某个点上整个事情变得很难处理。所以我要做的是

   static const char alpha_init[] = "abcd";
   ::std::copy(alpha_init, alpha_init+4, alpha);

alpha={'a','b','c','d'}
-在已经在其他地方声明了数组之后,您无法初始化这样的数组。您必须在一行中完成所有操作。该死…这意味着我将只为字母表使用26行…无论如何,感谢您提供的信息:D+1指出这在C++11中得到了解决。您还可以使用类内声明初始化ins构造函数初始值设定项列表的tead。
Matrix<M>::Matrix(int size)
{
    char alpha_init[4] = {'a','b','c','d'};
    std::copy(alpha_init,alpha_init+4,alpha);
Matrix<M>::Matrix(int size)
  : alpha{'a','b','c','d'}
{
struct Matrix {
    /* ... */
    char alpha[4] = {'a','b','c','d'};
    /* ... */
};
   static const char alpha_init[] = "abcd";
   ::std::copy(alpha_init, alpha_init+4, alpha);