C++ C+中构造函数的多个声明+;

C++ C+中构造函数的多个声明+;,c++,makefile,multiple-definition-error,C++,Makefile,Multiple Definition Error,我正在为一门课做作业,我遇到了(我认为是)一个基本问题。我试过看其他答案,但似乎找不到我的问题 当我运行commmandmake时,我得到以下错误: prog8lib.o: In function `Transform': .../prog8lib.cc:6: multiple definition of `Transform::Transform(std::basic_string<char, std::char_traits<char>, std::alloc

我正在为一门课做作业,我遇到了(我认为是)一个基本问题。我试过看其他答案,但似乎找不到我的问题

当我运行commmand
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中
to

#include "prog8lib.h"

否则,编译器将找到
Transform::Transform
的两个定义:一次在
prog8.cc
中,一次在
proglib8.cc
中,您已经在头文件中声明了一个类,这是您需要包含在main.cpp中的文件。始终包含头文件,而不是.cpp文件


在prog8.cc中,您包含了proglib8.cc文件而不是.h文件
#include <iostream>
#include <string>
#include <stdlib.h>
#include "prog8lib.h"

Transform::Transform(string startWord, string endWord) {
    cout << "Test" << endl;
}
Transform::~Transform() {}
#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
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 *~
#include "prog8lib.cc"
#include "prog8lib.h"