Marino Posted April 15, 2006 at 01:26 PM Report #22200 Posted April 15, 2006 at 01:26 PM #include <iostream> using namespace std; template <class T> class pair { T *values; const int capacity; int used; public: void putLast(const T &x); pair(T n) { used=0; capacity=n; values[n]; } ~pair() { delete [] values; } bool isEmpty(); }; template<class T> void pair<T>::putLast(const T &x) <---Erro nesta linha { if(capacity!=used) values[used]=x; } int main() { cout << "erro"; return 0; } expected initializer before '<' token
saramgsilva Posted April 15, 2006 at 01:47 PM Report #22205 Posted April 15, 2006 at 01:47 PM eu ate ajudava mas nao percebi 1 boi do teu programa... sim usa templates, tb dei.... mas o k faz o teu programa... mas 1 coisa k acho que n esta bem é template<class T> void pair<T>::putLast(const T &x) <---Erro nesta linha { if(capacity!=used) values[used]=x; } nao sera antes: void pair<T>::putLast(const T &x) { if(capacity!=used) values[used]=x; } nao programo desta forma... mas.... 🙂 www.saramgsilva.com As minhas apps no WP7 Marketplace Youtube : Galinho - Windows Phone 7.5
brink@ero Posted April 17, 2006 at 01:14 PM Report #22524 Posted April 17, 2006 at 01:14 PM #include <iostream> using namespace std; template <class T> class pair { T *values; const int capacity; int used; public: void putLast(const T &x); pair(T n) { used=0; capacity=n; values[n]; } ~pair() { delete [] values; } bool isEmpty(); }; template<class T> void pair<T>::putLast(const T &x) <---Erro nesta linha { if(capacity!=used) values[used]=x; } int main() { cout << "erro"; return 0; } expected initializer before '<' token Sinceramente, o único erro que o meu compilador detectou é essa linha de comentário "<---Erro nesta linha" Depois de ter eliminado, o programa correu sem problemas. Mas para alem disso tens umas coisas males. 1.º Dizes que o capacity é uma constante const int capacity; e depois fazes isto: capacity=n; O que não é aceitável, por isso apaga o const na declaração do capacity. 2.º Tens isto: pair(T n) { used=0; capacity=n; values[n]; } Em que o T é o que te der na tola (int, double, float...) Então deves querer forçar o input do n do tipo int (penso eu de que...) O values é um apontador e fazendo isto "values[n]" não estas a fazer nada (isso devolve o valor que o apontador *(values + n) está a apontar no endereço de memória (value + n)) O que deves querer é criar um vector, para isso deves reservar primeiro a memória necessária para tal. Para isso usas o new. Por exemplo, reservar um vector de double de dimensão 3: new double(3) O new devolve o endereço do vector, ou seja, a posição inicial do vector. Assim, o que deves querer é isto: values=new T(capacity); E em cada new que colocas no teu código, tens de por um delete (isso tu já tens) Dando um toque especial, o teu constructor fica: pair(int n): capacity(n), used(0), values(new T(capacity)) {}
TheDark Posted April 20, 2006 at 02:21 AM Report #23042 Posted April 20, 2006 at 02:21 AM Hm, tenho uma série de dúvidas sobre esse código. Há algum enunciado que possas mostrar? Desaparecido.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now