내가이 뭔가 같은 스택 데이터 구조 쓴 FUNC 밀어 컴파일되지 않습니다스택 템플릿은
template<class T>
Stos<T>::Stos(const T& n = 0): count(1) {
member = new Element(n);
}
template<class T>
T Stos<T>::get() {
return member->n;
}
template<class T>
Stos<T>::Element* Stos<T>::push(const T& n = 0) {
Element* point = member;
member = new Element;
member->prev = point;
if(n != 0) member->n = n;
++count;
return member;
}
template<class T>
T Stos<T>::pop() {
Element* point = member;
T n = point->n;
member = point->prev;
--count;
delete point;
return n;
}
template<class T>
void Stos<T>::mod(const T& n) {
member->n = n;
}
template<class T>
Stos<T>::~Stos() {
while(member) pop();
}
을 그리고 나는 그것을 컴파일 할 때 g ++에서 정의의 첫 번째 줄인 Stos::Element* Stos::push()
: expected constructor, destructor, or type conversion before ‘*’ token
에 대해이 오류가 발생합니다. 그것은 템플릿으로 무언가를 쓰는 나의 첫번째 시도입니다. 이 스택 코드는 템플릿을 사용하지 않고도 편집 할 수 있었지만 오류가 발생했습니다. "T"대신 "int"를 사용하여 모든 것이 잘 수행되었습니다.
그리고 왜 컴파일되지 않는지 알 수 없습니다. class :: member에 대한 포인터를 사용할 수 없습니까?
고맙습니다. 작동합니다. – silmeth
StackOverflow는 질문에 C++로 태그가 지정되고 "템플릿"과 "컴파일"이 해당 주제에서 발견되면 자동으로 "사용자가 typename이 필요합니다"를 넣어야합니다. –
"VS에서 포팅 된"경우에도 어딘가에 질문에 포함되어 있습니다 :-) – mmmmmmmm