[Dúvida] Arquivos (C++)

2 respostas
Nicolas_Fernandes

Olá, pessoal do GUJ!

Tudo bem??

Estou fazendo umas operações com arquivos, e me surgiu um problema.
Eis o código:

#ifndef FileOperationsH
#define FileOperationsH

#include <iostream>
#include <conio>
#include <fstream>
#include <string>

using namespace std;

class FileOperations {

   private:
   
      fstream file;  // Esta é minha variável para manipular o arquivo.
      string  fileName;

   public:
   
      FileOperations() : file(0), fileName(0) {}
      
      FileOperations(string fileName) : fileName(fileName) {}
      
      ~FileOperations() {}
      
      inline bool Open() {
      
        file(fileName.c_str(), ios_base::in | ios_base::out);
        //Neste ponto, ocorre um erro!
        //Call of nonfunction in function FileOperations::Open()
      }
};

#endif

Se eu criar uma variável fstream dentro do método, o compilador aceita numa boa. Se eu faço uso da minha variável privada lá em cima, ele reclama!

Alguém sabe o que pode ser??

Grato!

2 Respostas

B

Ah, você está tendo problemas com a notação de construtor. Você tem de usar file.open mesmo, não pode fazer como você fez nesse caso.

B
/// <returns>true se conseguiu abrir. false em caso contrário.</returns>
    inline bool Open() {  
        file.open (fileName.c_str(), ios_base::in | ios_base::out);  
        return ! file.fail();
    }

Dica 1) Em compiladores modernos, é dispensável usar a palavra-chave “inline”.
Dica 2) Cuidado com a notação de construtor - ela realmente dá muita margem a confusões.

Criado 9 de dezembro de 2009
Ultima resposta 9 de dez. de 2009
Respostas 2
Participantes 2