Estou criando um pequeno programa, que usa as duas funções da biblioteca read.h, abaixo:
#include <new>
#include <string>
#include <cstdio>
#include <fstream>
using namespace std;
using std::string;
void readstr (string &str, int max = 128) //lê uma string com espaços do teclado
{
char *p;
p = new char[max];
gets (p);
str = p;
delete p;
}
void freadstr (ifstream &file, string &str, int max = 128) //lê uma string com espaços de um arquivo
{
char *p;
p = new char[max];
file.getline (p, max);
str = p;
delete p;
}
Mas ocorre que quando compilo o projeto, o compilador que utilizo (Visual C++), gera as seguintes mensagens de erro:
c:\meus programas\ptg\read.h(9) : error C2572: 'readstr' : redefinition of default parameter : parameter 2
c:\meus programas\ptg\read.h(8) : see declaration of 'readstr'
c:\meus programas\ptg\read.h(9) : error C2084: function 'void readstr(std::string &,int)' already has a body
c:\meus programas\ptg\read.h(8) : see previous definition of 'readstr'
c:\meus programas\ptg\read.h(19) : error C2572: 'freadstr' : redefinition of default parameter : parameter 3
c:\meus programas\ptg\read.h(18) : see declaration of 'freadstr'
c:\meus programas\ptg\read.h(19) : error C2084: function 'void freadstr(std::ifstream &,std::string &,int)' already has a body
c:\meus programas\ptg\read.h(18) : see previous definition of 'freadstr'
Aí eu pesquisei no site do Visual Studio sobre o tal erro C2084, que diz que é quando você redefine a mesma função, como no exemplo:
Pergunta
Luiz Rodrigo
Estou criando um pequeno programa, que usa as duas funções da biblioteca read.h, abaixo:
#include <new> #include <string> #include <cstdio> #include <fstream> using namespace std; using std::string; void readstr (string &str, int max = 128) //lê uma string com espaços do teclado { char *p; p = new char[max]; gets (p); str = p; delete p; } void freadstr (ifstream &file, string &str, int max = 128) //lê uma string com espaços de um arquivo { char *p; p = new char[max]; file.getline (p, max); str = p; delete p; }Mas ocorre que quando compilo o projeto, o compilador que utilizo (Visual C++), gera as seguintes mensagens de erro: Aí eu pesquisei no site do Visual Studio sobre o tal erro C2084, que diz que é quando você redefine a mesma função, como no exemplo:void Func(int); void Func(int) // define specialization { } void Func(int) // C2084 second definition { }Mas aí que eu não entendi: se eu só coloquei uma vez cada função no arquivo (sequer sobrecarreguei-as), como pode acusar esse erro?
Agradeço, desde já, pela ajuda.
Editado por Luiz RodrigoLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.