Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.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++ Can';t分配函数指针的2D数组_C++_Arrays_Function - Fatal编程技术网

C++ Can';t分配函数指针的2D数组

C++ Can';t分配函数指针的2D数组,c++,arrays,function,C++,Arrays,Function,在Visual Studio中出现“此声明没有存储类或类型说明符”错误时,我尝试使用函数初始化数组。 我将在标题中声明一个数组: typedef void (*MultimethodFunc)(ofstream& out); extern MultimethodFunc multimethodFunc[][10]; 在.cpp文件中,我有以下内容: MultimethodFunc multimethodFunc[10][10]; 最后,我尝试在另一个.cpp中初始化它: void

在Visual Studio中出现“此声明没有存储类或类型说明符”错误时,我尝试使用函数初始化数组。 我将在标题中声明一个数组:

typedef void (*MultimethodFunc)(ofstream& out);

extern MultimethodFunc multimethodFunc[][10];
在.cpp文件中,我有以下内容:

MultimethodFunc multimethodFunc[10][10];
最后,我尝试在另一个.cpp中初始化它:

void TrainTrainOut(ofstream& out) {
    out << "\nTrain and Train" << endl;
}

void MMTrainTrainOut(ofstream& out) {
    return TrainTrainOut(out);
}

multimethodFunc[1][1] = MMTrainTrainOut;
multimethodFunc[1][2] = MMTrainAirplaneOut;
multimethodFunc[2][1] = MMAirplaneTrainOut;
multimethodFunc[2][2] = MMAirplaneAirplaneOut;
void trainout(流和流){

out您不能将赋值放在文件范围内

以下程序给出了错误信息:

此声明没有存储类或类型说明符

#包括
使用名称空间std;
类型定义无效(*MultimethodFunc)(流和流);
无效列车输出(流和输出){

这些不是初始化,而是赋值。
MultimethodFunc muntimethodFunc[10][10]={/*这里的值*/}
那将是一个初始化。@Wyck,谢谢,更改了这个问题的标题。您不能将赋值放在文件范围内。将赋值放在函数中并调用函数。@Wyck,我该怎么做?只需制作另一个函数并将赋值放在其中即可?
#include <fstream>

using namespace std;

typedef void (*MultimethodFunc)(ofstream& out);

void TrainTrainOut(ofstream& out) {
    out << "\nTrain and Train" << endl;
}

void MMTrainTrainOut(ofstream& out) {
    return TrainTrainOut(out);
}

MultimethodFunc multimethodFunc[10][10];

multimethodFunc[1][1] = MMTrainTrainOut;  /* ERROR HERE */
multimethodFunc[1][2] = MMTrainTrainOut;
multimethodFunc[2][1] = MMTrainTrainOut;
multimethodFunc[2][2] = MMTrainTrainOut;

int main() {

}
#include <fstream>

using namespace std;

typedef void (*MultimethodFunc)(ofstream& out);

void TrainTrainOut(ofstream& out) {
    out << "\nTrain and Train" << endl;
}

void MMTrainTrainOut(ofstream& out) {
    return TrainTrainOut(out);
}

MultimethodFunc multimethodFunc[10][10];


void initializeThings() {
    multimethodFunc[1][1] = MMTrainTrainOut;
    multimethodFunc[1][2] = MMTrainTrainOut;
    multimethodFunc[2][1] = MMTrainTrainOut;
    multimethodFunc[2][2] = MMTrainTrainOut;
}

int main() {
    initializeThings();
}