Я получаю сообщение об ошибке
declaration is incompatible with "void spectrogram<T>::update(<error-type> x)
Я не вижу никакой разницы между объявлением и определением метода, не уверен, почему он жалуется только на это определение, а не на конструктор илидеструктор.
Вот vComplex.hpp
#ifndef VCOMPLEX_H
#define VCOMPLEX_H
template <class T>
class vComplex {
public:
T* realp;
T* imagp;
int length; // for bookkeeping
vComplex(void) { }
vComplex (T* I, T* Q, int len) {
realp = I;
imagp = Q;
length = len;
}
~vComplex(void) {
free(realp);
free(imagp);
}
void put(T* I, T*Q, int len) {
realp = I;
imagp = Q;
length = len;
}
};
#endif
объявление функции для обновления в spectrogram.hpp, с удалением других членов:
#ifndef SPECTROGRAM_H
#define SPECTROGRAM_H
template <typename T>
class spectrogram {
public:
void update(vComplex<T> x);
};
#endif
и подпись функции(и включает) для обновления в spectrogram.cpp:
#include <stdio.h>
#include <math.h>
#include "spectrogram.hpp"
#include "vComplex.hpp"
template <typename T>
void spectrogram<T>::update(vComplex<T> x) {
//do stuff
}
В VS 2017, я получаю красное подчеркивание при обновлении, и все внутри него ломается в основном.VS говорит, что T не определено, что, я полагаю, вызвано общей ошибкой.Я должен использовать динамически размещаемые указатели, у меня нет возможности использовать другие типы или контейнеры.