gpt4 book ai didi

C++回调函数问题

转载 作者:行者123 更新时间:2023-11-28 02:46:07 35 4
gpt4 key购买 nike

我编写了一个简单的 C++ 程序来接受回调。

回调有什么作用?回调是主函数的第二个参数,它只返回一个字符串,然后主函数将该字符串插入到 .txt 文件中。

错误是什么?Visual Studio 2013 抛出此错误:

error C2664: 'void WriteToFile(std::string,std::string (__cdecl *)(std::string))' : cannot convert argument 2 from 'std::string' to 'std::string (__cdecl *)(std::string)'

这是代码:

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

void WriteToFile(string filename, string (*f)(string) )
{
ofstream FileProcessor;

FileProcessor.open(filename, ios::app);

FileProcessor << &f << endl;

}

string Printer(string Content)
{
return Content;
}

int main()
{

WriteToFile("test.txt", Printer("exampleText"));


}

最佳答案

AFAIK Printer("exampleText") 传递不正确。 WriteToFile 函数的第二个参数接受指向函数的指针。所以只需传递函数 Printer

传递的函数指针的参数应该作为不同的参数发送。

有点像-

void WriteToFile(string filename, string (*f)(string), string mystring )
{
ofstream FileProcessor;

FileProcessor.open(filename, ios::app);

FileProcessor << f(mystring) << endl;

}

然后像这样调用

WriteToFile("test.txt", Printer, "exampleText");

关于C++回调函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24362576/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com