Я довольно новичок в C++, и я не могу найти никого другого, у кого была такая же проблема, как и я. В принципе, я пытаюсь создать абстрактный класс, который я никогда не создаю непосредственно, и несколько дочерних классов. Кроме того, я пытаюсь сохранить согласованный шаблон по всем супер/подклассам. Вот мои исходные файлы. У меня есть 3 служебных файла и один .cpp-файл для основной функции.Метод не найден: Шаблоны, Виртуальные методы, Наследование, Полиморфизм
abstract_matrix.h
#ifndef ABSTRACTMATRIX
#define ABSTRACTMATRIX
template<class T>
class DataMatrix {
public:
int numFeatures;
int numPoints;
T* data;
T* classifications;
virtual void scale(T scalar) = 0;
};
#endif
Вот мой подкласс объявление этого абстрактного класса, sparse_host_matrix.h
#ifndef SPARSEHOSTMATRIX
#define SPARSEHOSTMATRIX
#include <iostream>
template<class T>
class SparseHostMatrix : public DataMatrix<T> {
public:
void scale(T scalar);
};
#endif
А вот реализация этих функций ..
#include "sparse_host_matrix.h"
#include <iostream>
template<class T>
void SparseHostMatrix<T>::loadFromFile(char* filename) {
std::cout << "Loading in sparseHostMatrix" << std::endl;
}
template<class T>
void SparseHostMatrix<T>::scale(T scalar) {
std::cout << "Loading in sparseHostMatrix" << std::endl;
}
И когда я запускаю эту основную функцию ...
#include <iostream>
using namespace std;
#include "abstract_matrix.h"
#include "sparse_host_matrix.h"
int main() {
DataMatrix<double> *myMat = new SparseHostMatrix<double>;
myMat->scale(.5);
}
Я получаю ошибку неопределенной ссылки на `SparseHostMatrix :: масштаб (двойной)
Извини за огромное количество кода, я просто очень смущен и застрял на этом некоторое время без успешно найти решение на SO или иначе.