0

我对 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);

谢谢您的帮助!

4

0 回答 0