Почему появляется эта ошибка? ошибка: переопределение 'Vector <Data>' - PullRequest
1 голос
/ 04 апреля 2020

main. cpp

#include <iostream>
#include "vector.hpp"


int main(){
  lasd::Vector<int> Vector_int(400);
}

vector. cpp

#include <iostream>
#include "vector.hpp"


template <class Data>
lasd::Vector<Data>::Vector(Data a){
  this->Pointer = a;
}

vector.hpp

#ifndef VECTOR_HPP
#define VECTOR_HPP

namespace lasd{

template <typename Data>
class Vector{
  private:
    int dimensione;
    Data Pointer;

  public:
    Vector();
    Vector(Data a);

};

}

#include "vector.cpp"

#endif

ОШИБКА

./vector.cpp:6:21: error: redefinition of
      'Vector<Data>'
lasd::Vector<Data>::Vector(Data a){
                    ^
./vector.cpp:6:21: note: previous definition is
      here
lasd::Vector<Data>::Vector(Data a){
                    ^
1 error generated.

Я не могу понять, в чем заключается ошибка в моем коде. Подскажите, пожалуйста, что не так. Если бы вы могли дать мне предложение / совет, я был бы благодарен. Я бился головой все утро. PS Я изучал с ++ очень короткое время.

1 Ответ

2 голосов
/ 04 апреля 2020

Проблема в vector.hpp

#include "vector.cpp"

Удалите эту строку.

Но тогда у вас будет другая проблема: код шаблона должен go в заголовочных файлах. Так что переместите весь код из "vector. cpp" в "vector.h" и удалите "vector. cpp"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...