ошибка: назначение ‘mapped_type’ (он же int (*) () ‘) из несовместимого типа int (Rsh :: *) (*)’

Я не понял, почему у меня есть эта ошибка ..

Все необходимые библиотеки уже включены в другой .h

у меня есть Rsh.h с :

class Rsh
{
private:
map<string, int(*)(const string &, FILE*)>  supportedCmds;

public:
Rsh                     ();
~Rsh                    ();
void                setup                   ();
};

И Rsh.cpp с:

void                Rsh::setup()
{
// Fill up list of supported commands
supportedCmds["cd"]         = &Rsh::ashCd;
supportedCmds["ls"]         = &Rsh::ashLs;
supportedCmds["pwd"]        = &Rsh::ashPwd;
supportedCmds["history"]    = &Rsh::ashHistory;
supportedCmds["exit"]       = NULL;
}

И выходное сообщение g ++ выглядит так:

src/Rsh.cpp:24:26: error: assigning to 'mapped_type' (aka 'int (*)(const
std::__1::basic_string<char> &, __sFILE *)') from incompatible type 'int (Rsh::*)(const
string &, FILE *)'
supportedCmds["cd"]                     = &Rsh::ashCd;
^~~~~~~~~~~
src/Rsh.cpp:25:26: error: assigning to 'mapped_type' (aka 'int (*)(const
std::__1::basic_string<char> &, __sFILE *)') from incompatible type 'int (Rsh::*)(const
string &, FILE *)'
supportedCmds["ls"]                     = &Rsh::ashLs;
^~~~~~~~~~~
src/Rsh.cpp:26:26: error: assigning to 'mapped_type' (aka 'int (*)(const
std::__1::basic_string<char> &, __sFILE *)') from incompatible type 'int (Rsh::*)(const
string &, FILE *)'
supportedCmds["pwd"]            = &Rsh::ashPwd;
^~~~~~~~~~~~
src/Rsh.cpp:27:29: error: assigning to 'mapped_type' (aka 'int (*)(const
std::__1::basic_string<char> &, __sFILE *)') from incompatible type 'int (Rsh::*)(const
string &, FILE *)'
supportedCmds["history"]        = &Rsh::ashHistory;
^~~~~~~~~~~~~~~~
4 errors generated.

Какие-либо предложения ?


Исправлено с помощью: map<string, int(Rsh::*)(const string &, FILE*)> supportedCmds;
Спасибо @WhiZTiM

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]