I want to test the following lines but I get a LNK2019 error, pointing an error in my constructor. If the constructor implementation is moved from the source file to the header, it works...
dVector is a typedef of std::vector
error LNK2019: unresolved external symbol "public: __thiscall Grid::Grid(int,class std::vector > &,class std::vector > &,class std::vector > &)"
//main.cpp
#include <Math/PDE/Grid.h>
#include <vector>
int main(){
dVector oLowerBounds(2);
dVector oUpperBounds(2);
int lNumberOfStates(2);
dVector oMArkovianStates(2);
std::vector<int> oGridSizes(2);
Grid * pGrid= new Grid(lNumberOfStates, oLowerBounds, oUpperBounds, oGridSizes);
return 0;
}
//Grid.h
#ifndef GRID_H
#define GRID_H
#pragma once
#include <Math/Matrix/Matrix.h>
#include<vector>
class Grid
{
public:
Grid(int inGridDimension,
dVector &inLowerBounds,
dVector &inUpperBounds,
std::vector<int> &inGridSizes);
double getGridElement(int index1, int index2){return mGrid[index1][index2];};
void buildUniformGrid();
bool getIsUniformGrid(int index){return mIsUniformGrid[index];};
int getGridSize(int index);
~Grid(void);
private:
int mGridDimension;
std::vector<bool> mIsUniformGrid;
std::vector<double> mLowerBounds;
std::vector<double> mUpperBounds;
std::vector<int> mGridSizes;
std::vector<std::vector<double>> mGrid;
};
#endif
//Grid.cpp
#include <Math/PDE/Grid.h>
Grid::Grid(int inGridDimension,
std::vector<double> &inLowerBounds,
std::vector<double> &inUpperBounds,
std::vector<int> &inGridSizes):
mGridDimension(inGridDimension),
mLowerBounds(inLowerBounds),
mUpperBounds(inUpperBounds),
mGridSizes(inGridSizes)
{
}
Grid::~Grid(void)
{
}