0
//Menu.h

#include<iostream>
#include<conio.h>
#include <map>
#include <string>
#include <functional>
#include <utility>

using namespace std;
map<string,function< void() > > mapa;
string names[100];
string functions[100];
char keys[100];
int pos=0;

void menu(string name,char key,string functionc)
{
    names[pos]=name;
    keys[pos]=key;
    functions[pos]=functionc;
    mapa.insert(map<string,function< void()> >::value_type(functionc,functionc));
    pos++;
}

void write()
{
    for(int i=0;i<pos;i++)
    {
        cout<<names[pos]<<" ";
        cout<<endl;
    }
}

エラー: エラー 1 エラー C2064: 項は引数を 0 個取る関数として評価されません

//Main.cpp
    #include <iostream>
    #include <map>
    #include <string>

    #include"Menu.h"
    using namespace std;

    void ime()
    {
    cout<<"k";
    }

    int main() {
    menu("ime1",'c',"ime");
    pisi();

    system("PAUSE");
      return 0;
    }   

ユーザーがメニューを作成できるように、ヘッダーを汎用にしたい。それはその名前を計算し、その機能にアクセスするためにどの文字を押す必要があるかを示します。ユーザーはそれを使用する必要があるヘッダーから独自の機能を作成します....

4

4 に答える 4

1

std::function<void()>ここからを作成しようとしていstd::stringます:

map<string,function< void()> >::value_type(functionc,functionc)
        //                                           ^^^^^^^^^

引数なしで呼び出し可能なものを渡して、 を返す必要がありますvoid。例えば:

void foo() {};

mapa.insert(std::make_pair(functionc, foo));
于 2013-07-04T10:57:53.803 に答える
0
//MENU.h
#include<iostream>
#include<conio.h>
#include <map>
#include <string>
#include <functional>
#include <utility>

using namespace std;
map<string,function< void() > > mapa;
string names[100];
string functions[100];
char keys[100];
int pos=0;

void menu(string name,char key, function< void() >functionc)
{
    names[pos]=name;
    keys[pos]=key;
    functions[pos]=functionc;
    mapa.insert(std::make_pair(name,functionc));
    pos++;
}

//Main.cpp
    #include <iostream>
    #include <map>
    #include <string>

    #include"Menu.h"
    using namespace std;

    void ime()
    {
    cout<<"k";
    }

    int main() {
    menu("ime1",'c', ime);
    pisi();

    system("PAUSE");`enter code here`
      return 0;
    } 
于 2017-01-03T14:41:06.760 に答える