• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Szablony klas c++

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
712 wizyt
pytanie zadane 8 grudnia 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)

Hej, robię w tej chwili parser arytmetyczny i potrzebuje uniwersalnego stosu (to jest struktura) oraz klasy do jego użycia. Mam pewien problem z funkcją z parametrami opartymi na szablonie. Myślę że pytanie będzie najbardziej zrozumiałe gdy podam kod:

plik.h:

#pragma once

template <class T> struct stack {
	T value;
	stack *last;
};

template<class TYPE>class Tstack
{
private:
	stack<TYPE> *height;
public:
	Tstack();
	~Tstack();

	void push(TYPE val ); //ta funkcja bedzie powodowala blad 
};

plik.cpp:

#include "stdafx.h"
#include "Tstack.h"


Tstack<class TYPE>::Tstack()
{
	height = nullptr;
}


Tstack<class TYPE>::~Tstack()
{
}

void Tstack<class TYPE>::push(TYPE	val) { //tutaj mam podkreślony błąd który uniemożliwia kompilację
	//
}

Z góry dziękuje za pomoc i pozdrawiam (ps. szablony stosuje pierwszy raz)
 

1 odpowiedź

+1 głos
odpowiedź 8 grudnia 2017 przez Dexterim Dyskutant (8,370 p.)

Z  tego co pamiętam to jeśli piszemy klasę szablonwą to jej motedy powinny być w jednym pliku.

Druga rzecz to jak implementujesz metody do klasy szablonowej to prze każdą metodą jest wymagane:

template <typename T>
void Klasa<T>::metoda(){}

 

komentarz 8 grudnia 2017 przez Jakub 0 Pasjonat (23,120 p.)

dzięki, napisałem funkcje w pliku z klasą i jest ok:
 

template<class TYPE>class Tstack
{
private:
	stack<TYPE> *height;
public:
	Tstack();
	~Tstack();

	void push(TYPE val) {
		//
	}
};

Ale nie musiałem pisać typename... Chyba że barak tego nie robi błędu a grozi innym konsekwencjami

komentarz 8 grudnia 2017 przez Dexterim Dyskutant (8,370 p.)
Tak tylko zaimplementowałeś funkcje w klasie, ale możesz poza klasą tylko że w tym samym pliku
komentarz 9 grudnia 2017 przez j23 Mędrzec (190,560 p.)

Chyba że barak tego nie robi błędu a grozi innym konsekwencjami

class i typename w tym kontekście znaczą dokładnie to samo. class używało się kiedyś, dziś raczej używa się typename.

Podobne pytania

–1 głos
1 odpowiedź 199 wizyt
pytanie zadane 12 stycznia 2017 w C i C++ przez timrh Mądrala (6,050 p.)
0 głosów
1 odpowiedź 214 wizyt
pytanie zadane 14 lutego 2019 w C i C++ przez Sic Dyskutant (8,510 p.)
0 głosów
1 odpowiedź 110 wizyt
pytanie zadane 10 grudnia 2016 w C i C++ przez Szahid Pasjonat (20,930 p.)

90,890 zapytań

139,565 odpowiedzi

313,872 komentarzy

60,366 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...