0
我試圖創建函數,獲取二進制文件,寫入和讀取函數的指針。 的功能都需要得到: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
爲什麼錯誤嗎?
你需要兩條信息來調用一個類的方法 - instan課程的內容和方法。 'fstream * instance = &dskfl;'和'void(fstream :: * method)(char *,int)=&fstream :: write;'然後使用'(instance - > * method)(char *,int)'來調用方法。 – Vishal
@Vishal 我改變到 「空隙FUNC(fstream的*實例,空隙(fstream的:: *方法)(字符*,INT))」 等 \t FUNC(&dskfl,&(fstream的 和呼叫的功能::寫)); 我得到錯誤 \t \t 4智能感知:類型的std :: basic_ostream <炭的std :: char_traits>&(標準:: basic_ostream <炭的std :: char_traits > :: *)(常量的」參數char * _Str,std :: streamsize _Count)「與參數類型」void(std :: basic_fstream > :: *)(char *,int)「不兼容 –
jordan