私はちょうどC++から始めて、この問題に遭遇しました。C++の未定義のコンストラクタ
:私はこの(Fifotest.cpp)のように私のクラスをテストし、/* Fifo.cpp*/
#include "Fifo.h"
template <class T>
Fifo<T>::Fifo(int len)
{
//_fifoptr = new FifoImpl_class((T)len);
printf ("From the constructor\n");
//thisbuffer = malloc(sizeof(T)*len);
}
template <class T>
Fifo<T>::~Fifo() { }
template <class T>
int Fifo<T>::AddTokens(T* buffer, int len)
{
printf("Added tokens\n");
return(1);
}
template <class T>
int Fifo<T>::RetrieveTokens(T* buffer, int len)
{
printf("Removed tokens\n");
return(2);
}
そして:
/* Fifo.h */
#ifndef FIFO_H_
#define FIFO_H_
#include <atomic>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
template <class T>
class Fifo
{
public:
Fifo<T>(int len);
~Fifo<T>();
int AddTokens(T* buffer, int len);
int RetrieveTokens(T* buffer, int len);
private:
//int len;
};
#endif /* FIFO_H_ */
そしてFifo.cppの定義:私は、FIFOがFifo.hで定義されたクラスを持っていますFifo<int>::~Fifo()' undefined reference to
FIFO :: FIFO(int型)」
#include "Fifo.h"
int main(int argc, char *argv[])
{
Fifo<int> MyFifo(20);
}
のgcc-4.5でそれを構築することが私にこのエラーが発生します
関連するメソッドが定義されているように見えますが、なぜこのエラーが出るのか理解できません。私はそれに時間を掛けて過ごしました。オプションは実行中のクラスを取り、それを変更することでした。しかし、私はすでに何が悪いのかを知りたい。助けていただければ幸いです!あなたはFifotest.cpp
からFifo.h
が含まれている場合
これには6兆ダースが必要です。 – Puppy