在功能列表中未能调用函数

Failed to call function in a list of functions

本文关键字:调用 函数 功能 列表      更新时间:2023-10-16

我有以下c 代码,该c 代码将2存储在列表中,然后在呼叫中,然后在内部列表中:

#include <string>
#include <queue>
#include <list>
#include <map>
#include <vector>
#include <utility>
#include <iostream>
#include <thread>
#include <Windows.h>
#include <stdio.h>
using namespace std;
typedef void (*fp)();
void simpletest1(){
    cout << "test1";
}
void simpletest2(){
    cout << "test2";
}
int main()
{
    list<fp> generalHandlers;
    generalHandlers.push_back(simpletest1);
    generalHandlers.push_back(simpletest2);
    for (auto it = generalHandlers.begin(); it != generalHandlers.end(); ++it){
        (*it)();
    }

    return 0;
}

但是,在编译和运行后,它没有打印出任何东西,只是在1秒内终止。怎么了?

代码是完全有效的,所以问题在其他地方;
也许您应该尝试在程序退出之前暂停该程序,以便实际上可以阅读输出中的内容。还可以用std::endl冲洗cout缓冲区可能会有所帮助。

它对我有用,尽管我用'std :: vector'替换了'列表'。也许您只是没有注意到输出,因为您在cout语句之后没有添加" endl"?

您需要冲洗输出缓冲区。尝试:

void simpletest1(){
    cout << "test1" << endl;
}
void simpletest2(){
    cout << "test2" << endl;
}

或者,将您的功能独自离开,从main齐平:

int main()
{
    list<fp> generalHandlers;
    generalHandlers.push_back(simpletest1);
    generalHandlers.push_back(simpletest2);
    for (auto it = generalHandlers.begin(); it != generalHandlers.end(); ++it){
        (*it)();
    }
    cout << endl;
    return 0;
}