Преобразовать CString в тип Enum в MFC (VC ++)? - PullRequest
0 голосов
/ 29 ноября 2010

как конвертировать CString в тип Enum в MFC (VC ++)?

У меня есть один метод, который принимает входной параметр как Enum, но я передаю ему значение Cstring, как я могу преобразовать его в enum.

CString strFolderType = strFolderType.Right(strFolderType.GetLength()-(fPos+1));
m_strFolderType = strFolderType ;

У меня есть один метод как

ProtocolIdentifier(eFolderType iFolderType)

where enum eFolderType
{
    eFTP = 1,
    eCIFS,
    eBOTH
};

теперь, когда я звоню так:

ProtocolIdentifier(m_strFolderType);   

Он говорит, что не может конвертировать CString в eFolderType ...

Как решить эту проблему?

1 Ответ

1 голос
/ 29 ноября 2010

Почему m_strFolderType строка?Похоже, это должен быть eFolderType.

. Не существует автоматического способа конвертировать CString в enum (что на самом деле является целым числом).Значения eFTP, eCIFS и eBOTH не являются строками, и компилятор не будет обрабатывать их как таковые.

Передача целого числа в виде строки ужасна.Вы должны передать eFolderType в качестве аргумента.Если вы должны передать строку (возможно, это произошло из-за некоторой сериализации, которая вернула строку), вам придется сделать что-то вроде этого:

eFolderType result = /* whichever should be the default*/ ;
if (m_strFolderType == _T("eFTP")) {
    result = eFTP;
} else if (m_strFolderType == _T("eCIFS")) {
    result = eCIFS;
} else if (m_strFolderType == _T("eBOTH")) {
    result = eBOTH;
} else {
    // Invalid value was passed: either use the default value or
    // treat this as an error, depending on your requirements.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...