Я попытался создать функцию, которая получает указатель на функции двоичного файла, пишет и читает. Обе функции необходимо получить:Указатель cpp для записи функции в двоичном файле
1) символ * (на функцию записи полукокс * означает, от ведьм адреса записи, и на функции полукокса чтения * означают, чтобы ведьма адрес чтения)
2) Int (на напишите адрес, в котором указано, сколько wirte и функция read, которые означают, сколько читаемых).
Я хочу создать функцию, которая получает указатель для чтения/записи, но я получаю сообщение об ошибке мой код.
#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
почему пожалуйста?
Вам нужно две части информации, чтобы вызвать метод класса - instan ce класса и метод вызова. 'fstream * instance = &dskfl;' и 'void (fstream :: * method) (char *, int) = & fstream :: write;' и затем использовать '(instance -> * method) (char *, int)' для вызова метод. – Vishal
@Vishal я изменено на " пустот FUNC (fstream * экземпляр, недействительным (fstream :: * метод) (символ *, Int))" и вызова функции как \t FUNC (& dskfl, & (fstream :: написать)); я получаю ошибку IntelliSense: аргумент типа «СТД :: basic_ostream <полукокса, STD :: char_traits> и (станд :: basic_ostream <полукокса, СТД :: char_traits > :: *) (сопзЬ char * _Str, std :: streamsize _Count) "несовместим с параметром типа" void (std :: basic_fstream > :: *) (char *, int) " –
jordan