Как я могу избавиться оттип, который появляется в моем шаблоне метода?И входные данные для метода и класса являются шаблонами - PullRequest
0 голосов
/ 05 февраля 2019

Я получаю сообщение об ошибке

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 не определено, что, я полагаю, вызвано общей ошибкой.Я должен использовать динамически размещаемые указатели, у меня нет возможности использовать другие типы или контейнеры.

...