我试图创建函数来获取二进制文件,写入和读取功能的指针。两个函数都需要得到:
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); });