2015-11-28 9 views
1

Я работаю над назначением для класса, и я сталкиваюсь с тем, что я думаю, является основной проблемой. Я попытался найти другие ответы, но я не могу найти свою проблему.Несколько объявлений конструктора в C++

Когда я запускаю make ввод команды, я получаю следующее сообщение об ошибке:

prog8lib.o: In function `Transform': 
    .../prog8lib.cc:6: multiple definition of `Transform::Transform(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)' 
    prog8.o:.../prog8lib.cc:6: first defined here 
    prog8lib.o: In function `Transform': 
    .../prog8lib.cc:6: multiple definition of `Transform::Transform(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)' 
    prog8.o:.../prog8lib.cc:6: first defined here 

Это код, который я в настоящее время использую. Кто-нибудь может заметить мои ошибки?

Спасибо !!!

prog8.cc:

#include <iostream> 
#include <string.h> 
#include <stdlib.h> 

#include "prog8lib.cc" 

using namespace std; 

int main(int argc, char** argv) { 
    string start = argv[1]; 
    string end = argv[2]; 
    Transform(start, end); 
} 

prog8lib.cc:

#include <iostream> 
#include <string> 
#include <stdlib.h> 
#include "prog8lib.h" 

Transform::Transform(string startWord, string endWord) { 
    cout << "Test" << endl; 
} 
Transform::~Transform() {} 

prog8lib.h:

#ifndef PROG8LIB_H 
#define PROG8LIB_H 

#include <iostream> 
#include <string> 
#include <stdlib.h> 

using namespace std; 

class Transform{ 
private: 
    string start; 
    string end; 
public: 
    Transform(string str, string str2); 
    ~Transform(); 
}; 

#endif 

Makefile:

OBJ = prog8.o prog8lib.o 
OPTS = -g -c -Wall -Werror 

trans: $(OBJ) 
     g++ -o trans $(OBJ) 

prog8.o: prog8.cc 
    g++ $(OPTS) prog8.cc 

prog8lib.o: prog8lib.cc prog8lib.h 
     g++ $(OPTS) prog8lib.cc 

clean: 
     rm -f *.o *~ 
+0

В prog8.cc вы включили файл proglib8.cc вместо файла .h –

ответ

2

Изменить

#include "prog8lib.cc" 

в prog8.cc к

#include "prog8lib.h" 

В противном случае компилятор будет найти два определения Transform::Transform: один раз в prog8.cc и один раз в proglib8.cc.