用于在二进制文件上写入函数的 cpp 指针



我试图创建函数来获取二进制文件,写入和读取功能的指针。两个函数都需要得到:

1)char*(在写入函数上,char*表示从女巫地址

写入,在读取函数char*上表示,到女巫地址读取)

2) int (在写入地址上,表示有多少 wirte 和在读取函数上表示有多少读取)。

我想创建获取读/写指针的函数,但是我收到错误我的代码。

#include <iostream>
using namespace std;
#include <fstream>
void func(void(*funcToCall)(char*, int))
{
    char * temp= "zzz";
    funcToCall(temp, 3);
}
int main()
{
    fstream dskfl;
    dskfl.open("aa.txt", ios::out |  ios::binary);
    dskfl.close();
    dskfl.open("aa.txt", ios::out | ios::in | ios::binary);
    char ddd[]= "fffff";
    dskfl.write((char*)ddd, 5);
    dskfl.seekp(0);
    func(dskfl.write);
    dskfl.close();
}

我在网上收到错误

func(dskfl.write);
Error   1   error C3867: 'std::basic_ostream<char,std::char_traits<char>>::write': function call missing argument list; use '&std::basic_ostream<char,std::char_traits<char>>::write' to create a pointer to member 

为什么请?

您可以使用lambda

例如:

更改外部函数的签名以接收std::function

void func(std::function<void(char*, int)>&& funcToCall)

并像这样称呼它:

func([&dskfl](char* c, int i){ dskfl.write(c, i); });

最新更新