C++ 文件类型引发错误:非静态成员函数的使用无效

C++ 文件类型引发错误:非静态成员函数的使用无效,c++,file,C++,File,我试图从结构的特定成员开始,将二进制文件读入结构中。但是,当我尝试执行此操作时,会出现以下错误: 错误:非静态成员函数的使用无效 我想知道为什么会这样 typedef struct eh { /* ethernet header */ unsigned char eh_dst[6]; unsigned char eh_src[6]; unsigned short eh_type; } ethHead; typedef struct ep {

我试图从结构的特定成员开始,将二进制文件读入结构中。但是,当我尝试执行此操作时,会出现以下错误:

错误:非静态成员函数的使用无效

我想知道为什么会这样

typedef struct  eh {    /* ethernet header          */
    unsigned char eh_dst[6];
    unsigned char eh_src[6];
    unsigned short eh_type;
} ethHead;

typedef struct  ep  {        /* complete structure of Ethernet packet*/
    short   ep_ifn;      /* originating interface number        */
    short   ep_len;      /* length of the packet            */
    struct eh ep_eh;     /* the ethernet header         */
    char ep_data[1500];
    unsigned long ep_crc;
} ethFrame;

ep epReadFromFile(string nameOfFile){
    FILE *fp = fopen(nameOfFile.c_str, "rb");
    ep EPH;

    if (fp != 0) {
        fread(&EPH.ep_eh, sizeof(ep), 1, fp);
        printf("reading in File");
    }
    else {
        printf("Can't read file");
    }

    fclose(fp);
    return EPH;
}
此外,如果有更好的方法来使用fstream,我将非常感谢您的建议

我已尝试使用标准库执行此操作:

ep epReadFromFile(string nameOfFile){
    ifstream input_file(nameOfFile, ios::binary);
    ep ethernetPacket;
    input_file.read((char*)&ethernetPacket.ep_eh, sizeof(eh));
    return ethernetPacket;
}

但这无法正确读取文件。

您使用的是
nameOfFile.c_str
,它是string类的成员函数


将其更改为
nameOfFile.c_str()

您正在使用的
nameOfFile.c_str
,它是string类的成员函数


将其更改为
nameOfFile.c_str()

c++和c是不同的语言。标记已编辑。尽管考虑了所有其他因素,您仍试图读取与整个
struct ep
一样大的数据,但您试图将其存储在小于整个
struct ep
的空间中。这是不可能的。C++和C是不同的语言。标记已编辑。尽管考虑了所有其他因素,您仍试图读取与整个
struct ep
一样大的数据,但您试图将其存储在小于整个
struct ep
的空间中。这不可能奏效。