在Unix / Linux(Ubuntu)中编译头文件和两个.cpp文件

时间:2014-10-13 03:13:19

标签: c++ linux unix header-files

我正在尝试编译总共3个文件但无法获取。该代码适用于visual ++。我已将所有3个文件上传到同一个目录中,并使用以下命令。

  

g ++ -o edit Album.cpp lab8.cpp

我的文件名列在下面 Album.cpp Album.h lab8.cpp

请注意,代码是用Visual Studio C ++编写的,并在那里编译得很好。

以下结果

lab8.cpp:在函数'std :: vector read_album_file(std :: string)'中: lab8.cpp:142:25:错误:没有匹配函数来调用'std :: basic_ifstream :: basic_ifstream(std :: string&)'   ifstream read(filename); // ifstream用于从文件中读取                          ^ lab8.cpp:142:25:注意:候选人是: 在lab8.cpp中包含的文件中:38:0: /usr/include/c++/4.8/fstream:467:7:注意:std :: basic_ifstream< _CharT,_Traits> :: basic_ifstream(const char *,std :: ios_base :: openmode)[with _CharT = char; _Traits = std :: char_traits; std :: ios_base :: openmode = std :: _ Ios_Openmode]        basic_ifstream(const char * __s,ios_base :: openmode __mode = ios_base :: in)        ^ /usr/include/c++/4.8/fstream:467:7:注意:参数1从'std :: string {aka std :: basic_string}'到'const char *'没有已知的转换 /usr/include/c++/4.8/fstream:453:7:注意:std :: basic_ifstream< _CharT,_Traits> :: basic_ifstream()[with _CharT = char; _Traits = std :: char_traits]        basic_ifstream():__ command_type(),_ M_filebuf()        ^ /usr/include/c++/4.8/fstream:453:7:注意:候选人需要0个参数,1个提供 /usr/include/c++/4.8/fstream:427:11:注意:std :: basic_ifstream :: basic_ifstream(const std :: basic_ifstream&)      class basic_ifstream:public basic_istream< _CharT,_Traits>            ^ /usr/include/c++/4.8/fstream:427:11:注意:参数1从'std :: string {aka std :: basic_string}'到'const std :: basic_ifstream&'

没有已知的转换

1 个答案:

答案 0 :(得分:0)

查看ifstream的构造函数原型。它需要const char *和一个可选参数,你需要写filename.c_str()