Bonjour à tous,
Actuellement en reconversion en bioinformatique, je débute en C++. Je dois rendre un projet en C++ (C++98).
Mon programme doit lire un fichier fasta. Il est constitué de 3 fichiers :
- main.cpp
- ProcessFastaFile.cpp
- ProcessFastaFile.h
Je le compile avec un makefile, qui me retourne l’erreur suivante :
g++ -Wall -ansi -pedantic -c ProcessFastaFile.cpp
g++ -Wall -ansi -pedantic -c main.cpp
main.cpp:19:32: error: no viable conversion from 'std::__1::string' (aka 'basic_string<char,
char_traits<char>, allocator<char> >') to 'char'
fileFasta.readHeaderSequence(fasta);
^~~~~
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:876:5: note: candidate
function
operator __self_view() const _NOEXCEPT { return __self_view(data(), size()); }
^
./ProcessFastaFile.h:11:38: note: passing argument to parameter 'fasta' here
void readHeaderSequence(char fasta);
^
1 error generated.
make: *** [main.o] Error 1
Où est mon erreur ?
Voici les différents codes.
- main.cpp
#include <iostream>
#include "ProcessFastaFile.h"
#include <string>
using namespace std;
int main(int argc, char* argv[]) {
string fasta;
// Scans the command line
for (int i = 1; i < argc; i++) {
if ((strcmp(argv[i], "-fasta") == 0) && (i < argc-1)) // Compare the first argument with "fasta", if it returns true, it will be compared with (i < arc-1)
fasta = string(argv[++i]);
}
ProcessFastaFile fileFasta; // Create an object fastaFile (Statique)
fileFasta.readHeaderSequence(fasta);
return 0;
}
- ProcessFastaFile.cpp
#include <iostream>
#include <fstream>
#include <string>
#include "ProcessFastaFile.h"
using namespace std;
void ProcessFastaFile::readHeaderSequence(char fasta){
//std::cout << "Rien ne marche !" << endl;
ifstream fastaFile;
string line;
if(fastaFile) {
while(getline(fastaFile, line)) {
std::cout << line << endl;
}
}
else {
std::cout << "ERROR: can't open the file." << endl;
}
}
- ProcessFastaFile.h
#include <string>
class ProcessFastaFile {
public:
// Constructeur
ProcessFastaFile();
// Methode
void readHeaderSequence(char fasta);
};
- Makefile
GCC_OPTS = -Wall -ansi -pedantic
CXX = g++
fausse_cible: mon_prog
ProcessFastaFile.o: ProcessFastaFile.cpp ProcessFastaFile.h
$(CXX) $(GCC_OPTS) -c ProcessFastaFile.cpp
main.o: main.cpp
$(CXX) $(GCC_OPTS) -c main.cpp
mon_prog: ProcessFastaFile.o main.o
$(CXX) ProcessFastaFile.o main.o -o mon_prog
Merci beaucoup pour votre aide.
+0
-0