gets(var) não é recomendável para o padrão C++... no meu 1º post, eu coloquei só um pedaço do meu código, vou colocá-lo abaixo. Se quiser testar kartter, você vai entender melhor qual o problema.. //.h: #ifndef FUNC_H #define FUNC_H #include <string> #include <iostream.h> class func{ private: string nome; int idade; int matricula; int creditos; public: func(int); //sobrecarga de construtor func(string, int, int,int); ~func(); int retornaCreditos(); void exibeFunc(); func operator+(func &s2); }; #endif //.cpp: #include "func.h" using std::cin; using std::cout; using std::endl; using std::string; func::func(string nom, int idad, int matr, int credi) { nome=nom; idade=idad; matricula=matr; creditos=credi; } func::func(int cred) { creditos=cred; } int func::retornaCreditos() { return creditos; } void func::exibeFunc() { cout<<"Nome: "<<nome<<endl; cout<<"Idade: "<<idade<<endl; cout<<"Matricula: "<<matricula<<endl; cout<<"Creditos: "<<creditos<<endl<<endl; } func func::operator+(func &s2) { unsigned int c = creditos + s2.creditos; func t©; //altere para c entre parenteses depois do "t", fórum modifica return t; } void main() { func *temp; temp = new func(0); func *totalCreditos; totalCreditos = new func(0); int creditos; string nome; int idade; int matricula; const int tam=3; //tem q ser const pra não mudar depois func *funcionarios[tam]; func *crfunc[tam]; for (int i=0;i<tam;i++) { cout<<"Entre com os dados do funcionario:"<<endl; cout<<"Nome: "; getline(cin,nome); cout<<"Idade: "; cin>>idade; cout<<"Matricula: "; cin>>matricula; cout<<"Creditos: "; cin>>creditos; cout<<endl<<endl; cin.ignore(); //aqui está a linha editada funcionarios = new func(nome,idade,matricula,creditos); crfunc = new func(creditos); *totalCreditos = (*crfunc) + *temp; temp = totalCreditos; funcionarios->exibeFunc(); } cout<<"Total de creditos: "<<totalCreditos->retornaCreditos()<<endl; } func::~func(){} Na linha do getline (o mais recomendável para codificação c++), no 1º objeto eu consigo inserir o nome, mas a partir do 2º objeto, a string nome é pulada e não é armazenada. E se eu colocar duas vezes esta linha, na instanciação do 1º objeto eu obviamente tenho que entrar com o nome duas vezes, mas nos demais eu entro uma única vez. Estranho né? Sabe porque isso acontece? Propõe alguma solução?