Bonjour,

Je me fais insulter par le compilateur parce que je fais quelque chose de travers mais je ne comprends pas pourquoi.

Voici le code

File.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef DEF_FILE
#define DEF_FILE
 
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
class File
{
    public:
 
    File( const char *path );
    FILE *open( const char *path, char *mode);
    unsigned int getFileLength(const char *path);
 
 
    private:
 
    FILE *file;
    char *path;
};
 
#endif
File.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "File.h"
 
 
using namespace std;
 
 
File::File(const char *_path)
{
    strcpy( path, _path);
}
 
 
FILE *File::open(const char *path, char *mode)
{
    FILE *ptr = fopen( path, mode ) ;
 
    if ( ptr != NULL )
    {
        return ptr;
    }
}
 
unsigned int File::getFileLength(const char *path)
{
    char character;
    unsigned int counter;
 
    file.open(path, "r");
 
    while ( fscanf(file, "%c", &character) != EOF )
    {
        counter++;
    }
 
    fclose(file);
 
    return counter;
}
Il braille ici ...

... m'insultant de ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
request for member 'open' in '((File*)this)->File::file', which is of non-class type 'FILE*'|
Pourtant la méthode open est bien définie pour l'attribut file dans la classe File. Quelque chose m'échappe

Merci d'avance.