在c ++

时间:2015-07-06 07:40:25

标签: c++ namespaces

我收到一堆错误,说#34;未定义引用...",并且无法理解原因。我已经阅读了其他问题,其中包含错误"未定义的参考...",但答案对我来说是有效的。这是我的代码的一部分:
主:

#include <iostream>
#include <armadillo>
#include <string>
#include <DombsMain.h>

using namespace std;
using namespace arma;

int main(){

cout << "Armadillo version: " << arma_version::as_string() << endl;

dombsmain::initilize("test");

return 0;
}

dombsmain.h:

#ifndef DOMBSMAIN_H_INCLUDED
#define DOMBSMAIN_H_INCLUDED

#include <string>
#include <vector>
#include "Body.h"
#include "Constraint.h"
#include <Solver.h>

namespace dombsmain {

extern void initilize(std::string fileName);
extern std::string inputfileName;
...blabla
}
#endif // DOMBSMAIN_H_INCLUDED

dombsmain.cpp:

#include <DombsMain.h>
#include <BallJoint.h>
#include <dombs.h>
#indlude blabla

using namespace std;
using namespace arma;

namespace dombsmain{

void initilize(string infileName){

    inputfileName = infileName;
    ..blabla

我认为该错误与命名空间dombsmain有关。 DombsMain.h包含在main和dombsmain.cpp中,但它仍然表示命名空间中的变量和函数未定义。我认为在main和dombsmain.cpp中包括DombsMain.h可能存在一些冲突。我尝试删除main.cpp中的#include <DombsMain.h>,但后来我致电dombsmain::initilize("test");

1 个答案:

答案 0 :(得分:0)

你忘了定义std :: string inputfileName。例如,您可以在dobsmain.cpp中执行此操作:

namespace dombsmain{

void initilize(string infileName){

    inputfileName = infileName;
    }
std::string inputfileName = "";
}