重组模块后出错
Error after reorganization modulaire
我在模块化程序中转换了我的程序,因为所有程序都在一个头中。但是现在有一个问题我不知道。。
Undefined symbols for architecture x86_64:
"Vehicule::createVehicule(std::string)", referenced from:
_main in main-aV2PNG.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [main] Error 1
main.cpp
#include <iostream>
#include "Vehicule.h"
int main()
{
Vehicule *v=Vehicule::createVehicule("fr");
presenter(v);
return 0;
}
vehicule.h
#include <iostream>
class Vehicule
{
public:
virtual std::string getMarque() const =0;
friend std::ostream &operator<<(std::ostream &o,const Vehicule *v);
static Vehicule* createVehicule(std::string origine);
};
void presenter(const Vehicule *v)
{
std::cout << "Vehicule " << v << std::endl;
}
std::ostream &operator<<(std::ostream &o,const Vehicule *v)
{
return o << v->getMarque();
}
车辆.cpp
#include "Vehicule.h"
#include "CreateurConcretRenault.h"
#include "CreateurConcretFiat.h"
Vehicule* Vehicule::createVehicule(std::string origine)
{
if(origine=="fr") return new CreateurConcretRenault();
else if(origine=="ita") return new CreateurConcretFiat();
else return new CreateurConcretRenault();
}
CreateurConcreteRault.h
#include <iostream>
#include "Vehicule.h"
class CreateurConcretRenault : public Vehicule
{
public:
std::string getMarque() const;
};
CreateurConcreteRenalt.cpp
#include "CreateurConcretRenault.h"
std::string CreateurConcretRenault::getMarque() const
{
return "Renault";
}
CreateurConcreteFiat.h
#include <iostream>
#include "Vehicule.h"
class CreateurConcretFiat : public Vehicule
{
public:
std::string getMarque() const;
};
CreateurConcreteFiat.cpp
#include "CreateurConcretFiat.h"
std::string CreateurConcretFiat::getMarque() const
{
return "Fiat";
}
您使用的是std::string
,但从未包含<string>
。
我试图将所有内容放在一个标题中,结果成功了。。
所以我想我忘了什么
相关文章:
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 尝试导入pybind-opencv模块时出现libgtk错误
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- TraciMobility::getExternalId 将自定义模块添加到示例中时出错Veins_Inet (Omne
- 导入 Boost Python 模块 (function_impl_base9max_arityEv) 时出错
- r-使用Rcpp模块公开带有引用参数的c++类方法时出错
- 将自定义 Apache 2.4 模块与 Linux 上的 httpd/apr 库静态链接时出错
- 重组模块后出错
- 使用Rcpp创建模块时出错