函数的cpp指针写在二进制文件

时间:2016-03-16 06:56:27

标签: c++ function pointers function-pointers binaryfiles

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

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

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

我想要获取读/写指针的create函数,但是我得到一个错误 我的代码。

#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 

为什么请?

1 个答案:

答案 0 :(得分:0)

您可以使用lambda

例如:

更改外部功能的签名以接收std::function

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

并将其称为:

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