Как исправить ошибку «неразрешенных внешних элементов»? 1>lab15.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector::Vector(int)" (??0?$Vector@N@@QAE@H@Z) в функции _main
1>F:\study\CPPL\lab15\Debug\lab15.exe : fatal error LNK1120: неразрешенных внешних элементов: 1
Помогите пожалуйста. Я нагуглил, что эта ошибка из-за того, что нету реализации конструктора, но конструктор реализован.
Vector.h#pragma once
#include "stdafx.h"
#include
using namespace std;
template
class Vector
{
private:
int len;
int maxLen;
T *arr;
public:
Vector();
Vector(int maxLen);
~Vector();
void add(T item);
void printArray();
void operator -= (T a);
double &operator [] (int i);
void input(int count);
friend Vector operator - (Vector &vct, double a);
};
Vector.cpp#include "Vector.h"
template
Vector::Vector()
{
this->arr = NULL;
this->len = 0;
this->maxLen = 0;
}
template
Vector::Vector(int maxLen)
{
this->maxLen = maxLen;
this->arr = new T[maxLen];
this->len = 0;
}
template
Vector::~Vector()
{
}
template
void Vector::add(T item)
{
if (this->len >= this->maxLen) return;
this->arr[this->len] = item;
this->len++;
}
template
void Vector::input(int count)
{
T a = 0;
for (int i = 0; i > a;
this->add(a);
}
}
template
void Vector::printArray()
{
for (int i = 0; i len; i++)
{
cout arr[i]
void Vector::operator -= (T a)
{
for (int i = 0; i len; i++)
{
this->arr[i] = this->arr[i] - a;
}
}
template
double &Vector::operator [] (int n)
{
return this->arr[n];
}
template
Vector operator - (Vector& vct, double a)
{
Vector res(vct.maxLen);
res.len = vct.len;
for (int i = 0; i *my = new Vector (10);
system("pause");
return 0;
}

21 Авг 2019 в 07:00
498 +2
1
Ответы
1

Для исправления ошибки "неразрешенных внешних элементов" необходимо переместить реализацию шаблонных функций из файла Vector.cpp в файл Vector.h. Шаблонные функции должны быть определены непосредственно в заголовочном файле, чтобы компилятор мог использовать их при компиляции кода.

Ваш заголовочный файл Vector.h должен выглядеть следующим образом:

#pragma once
#include "stdafx.h"
#include <iostream>
using namespace std;
template <typename T>
class Vector
{
private:
int len;
int maxLen;
T *arr;
public:
Vector();
Vector(int maxLen);
~Vector();
void add(T item);
void printArray();
void operator -= (T a);
double &operator [] (int i);
void input(int count);
friend Vector operator - (Vector &vct, double a);
};
template <typename T>
Vector<T>::Vector()
{
this->arr = NULL;
this->len = 0;
this->maxLen = 0;
}
template <typename T>
Vector<T>::Vector(int maxLen)
{
this->maxLen = maxLen;
this->arr = new T[maxLen];
this->len = 0;
}
template <typename T>
Vector<T>::~Vector()
{
}
template <typename T>
void Vector<T>::add(T item)
{
if (this->len >= this->maxLen) return;
this->arr[this->len] = item;
this->len++;
}
template <typename T>
void Vector<T>::input(int count)
{
T a = 0;
for (int i = 0; i < count; i++)
{
cout << "Input the number: ";
cin >> a;
this->add(a);
}
}
template <typename T>
void Vector<T>::printArray()
{
for (int i = 0; i < this->len; i++)
{
cout << i << ": " << this->arr[i] << endl;
}
}
template <typename T>
void Vector<T>::operator -= (T a)
{
for (int i = 0; i < this->len; i++)
{
this->arr[i] = this->arr[i] - a;
}
}
template <typename T>
double &Vector<T>::operator [] (int n)
{
return this->arr[n];
}
template <typename T>
Vector<T> operator - (Vector<T>& vct, double a)
{
Vector<T> res(vct.maxLen);
res.len = vct.len;
for (int i = 0; i < vct.len; i++)
{
res.arr[i] = vct.arr[i] - a;
}
return res;
}

Затем в файле lab15.cpp нужно удалить подключение заголовочного файла Vector.cpp:

#include "Vector.cpp"

Эти изменения помогут избежать ошибки "неразрешенных внешних элементов". После внесения этих изменений перекомпилируйте проект.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир