C++ Can';t分配函数指针的2D数组
在Visual Studio中出现“此声明没有存储类或类型说明符”错误时,我尝试使用函数初始化数组。 我将在标题中声明一个数组: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
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();
}