我对 C++ 很陌生,但工作很努力。我在一个项目中使用 boost::multi_array 库,但我遇到了 typedef 问题。
//in main.h
#include "boost/multi_array.hpp"
#DEFINE D
#include "montecarlo.h"
typedef boost::multi_array<double, D> array_type;
typedef boost::multi_array<int, D> array_type_int;
然后我在另一个标题中使用 array_type 和 array_type int :
//in montecarlo.h
#ifndef MONTECARLO_INCLUDED
#include "main.h"
namespace mc
{
double foo(const array_type_int&,array_type&);
}
#endif
它是 cpp 文件:
// in montecarlo.cpp
#include"main.h"
void mc::foo(const array_type_int& ARRAYA,array_type& ARRAYB){
ARRAYA[0]=ARRAYB[0]
}
然后我得到这个我无法理解的错误,因为我的 typedef 对两个文件都是通用的
montecarlo.h:5:33: error: ‘array_type_int’ does not name a type
double distanceEvaluation(const array_type_int&, const array_type&,const int);
^~~~~~~~~~~~~~
montecarlo.h:5:56: error: ‘array_type’ does not name a type
double foo(const array_type_int&, const array_type&,const int);
谢谢您的帮助!