2017-06-04 17 views
-2

余分な{または}があるときからこのエラーメッセージがわかります。しかし、私の編集者は角括弧を強調表示し、それが一致することを示しています。 #endifの直後に問題があります。'}'トークンの前に予期される宣言

#ifndef PROYECTO_H 
#define PROYECTO_H 


#include<stdio.h> 
#include<stdlib.h> 
#include <fstream> 
#include <iostream> 
#include <string> 
#include <cassert> 
#include <cstddef> 

using namespace std; 
namespace lulz{ 

template<class T> 
struct Contacto { 
string Cname; 
string Apellidos; 
string NumTel; 
string email; 
T sexo; 
Contacto *Proximo; 
}; 



template<class T> 
class Lista { 
public: 
Lista(); 
~Lista(); 
bool ContactoVacio(); 
void InsertContact(Contacto<T> Temp); 
void InsertPosition(Contacto<T> Temp, Contacto<T>* Posicion); 
void BuscarContact(string Name, string Lastname); 
Contacto<T>* BuscarPosicion(int pos); 
void Display(ofstream& salida, Lista<T> Cabezalista); 
void Deletes(); 
friend ofstream& operator << (ofstream&salida, const Lista<T>& Cabezalista){ 
Contacto<T>* ContactList; 
int Pos=0; 
for(ContactList = Cabezalista.Cabeza; (ContactList != NULL) && (ContactList- 
>Proximo != NULL); ContactList = ContactList->Proximo) 
{ 
cout << ' ' << Pos+1 << ". " << ContactList->Cname << ' ' << ContactList- 
>Apellidos << ' '; 
cout << ContactList->NumTel << ' ' << ContactList->email << ' ' << 
ContactList->sexo << ' ' << endl; 
    Pos++; 
} 
cout << "Cantidad de nodos" << ' ' << Cabezalista.numNodos << endl; 
return salida; 
} 

private: 
Contacto<T>* Cabeza; 
int numNodos; 
}; 



template<class T> 
ifstream& operator >>(ifstream& entrada, Contacto<T>& Temp); 

template<class T> 
bool Validacion(Contacto<T> Temp); 

void Opening(ifstream& entrada); 
void Closing(ifstream& entrada); 
void Menu(); 

#endif // PROYECTO_H 
} 

私はテンプレートを追加して、オーバーロード演算子< <の実装を追加する前にそれは罰金実行していました。何か不足していますか?

+0

ファイルを2回インクルードするとどうなりますか?あるいは、別の方法で質問をするには、 '#'の前に問題を置くとどうなりますか? –

+1

'#endif'の直後にそのブラケットは何をしていますか? – AnT

+0

私はこれを試してみましたが、Tがこのスコープで宣言されていない、テンプレート引数1が無効で、assulmentのlulz :: Contacto acarana

答えて

1

#endifを最後の}の後に移動するだけです。

関連する問題