Próbuję utworzyć ogólny szablon bufora cyklicznego, ale istnieje pewien błąd składniowy, którego nie mogę zrozumieć. Błąd jest w moim konstruktorze, chociaż wydaje się, że sparametryzowałem destruktor w ten sam sposób i że działa. Podążyłem za przykładem w Stroustrup C++ i używa on parametru przed operatorem rozdzielczości, a także w nazwie funkcji, tak jak ja. Jestem również pewien, że nie ma żadnych okrągłych zależności, ponieważ kompiluję tylko jeden plik. Również implementacja i deklaracje znajdują się w tym samym pliku (CircBuf.h) i nie ma odpowiedniego pliku .cpp, więc również nie powinno to stanowić problemu. Próbowałem dodać słowo kluczowe "inline" zgodnie z this rozwiązanie i pojawia się ten sam błąd.Składnia konstruktora w klasie szablonu
/* CircBuf.h */
template<typename T> class CircBuf {
// don't use default ctor
CircBuf();
int size;
T *data;
public:
CircBuf(int);
~CircBuf();
};
template<typename T> CircBuff<T>::CircBuf<T>(int i) {
data = new T[i];
}
template<typename T> CircBuf<T>::~CircBuf<T>() {
delete data;
}
makefile
all:
g++ -g -pedantic CircBuf.h -o prog
kompilator błędów
CircBuf.h:13:22: error: ‘CircBuff’ does not name a type
Napisałeś 'CircBuff' zamiast' CircBuf' w jednym wystąpieniu. Oto, co próbuje ci powiedzieć kompilator. –