我试图创建获取二进制文件,写入和读取功能的指针的函数。 这两个函数都需要得到:
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
为什么请?
答案 0 :(得分:0)
您可以使用lambda
例如:
更改外部功能的签名以接收std::function
:
void func(std::function<void(char*, int)>&& funcToCall)
并将其称为:
func([&dskfl](char* c, int i){ dskfl.write(c, i); });