'namespace'を使用するファイルと'using namespace' を使用するファイルの 2 つのセットがあります。後者を使用すると、次のような未定義の参照エラーが発生します。
tsunamidata.cpp:(.text+0x1a0): undefined reference to `NS_TSUNAMI::ReadTsunamiData(IntVector2D, std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >)'
collect2: ld returned 1 exit status
これはソースファイルです:
#include "tsunamidata.h"
using namespace std;
using namespace NS_TSUNAMI; //if I replace this with 'namespace NS_TSUNAMI' it works!!
vector< vector<double> > ReadTsunamiGrid(IntVector2D pos) {
ifstream infile;
infile.open("H11_V33Grid_wB_grdcor_inundated.grd");
vector< Vector2D> range;
infile>>range[0].x;
infile>>range[0].y;
infile>>range[1].x;
infile>>range[1].y;
IntVector2D dxdy,size;
infile>>dxdy.i; infile>>dxdy.j;
infile>>size.i; infile>>size.j;
for (int j = size.j-1; j>-1; j--)
for(int i=0; i < size.i; i++)
infile>>tsunami_grid[j][i];
return tsunami_grid;
}
bool Agent_drowned(IntVector2D agnt_pos) {
ReadTsunamiData(agnt_pos, tsunami_grid );
return true;
}
double ReadTsunamiData(IntVector2D pos, vector<vector<double> > tsunami_depth) //Function which causes the error!!
{
return tsunami_depth[pos.j][pos.i];
}
ヘッダファイル:
#ifndef TSUNAMIDATA_H
#define TSUNAMIDATA_H
#include "../../Basic_headers.h"
namespace NS_TSUNAMI {
vector< vector <double> > tsunami_grid;
bool Agent_drowned(IntVector2D agnt_pos);
vector<vector<double> > ReadTsunamiGrid(IntVector2D pos);
double ReadTsunamiData(IntVector2D pos, vector<vector<double> > tsunami_depth);
}
#endif
その関数でのみ発生するため、エラーが発生する理由がわかりませんか?