2012-06-28 1 views
0

Следующая строка компилируется в vc6, но когда я обновляю проект в vs2008, обнаружил много ошибок, которые я нашел, но в основном 2 ошибки.ошибка, обнаруженная при обновлении проекта: operator '=' неоднозначно, и 'ios': не является именем класса или пространства имен

//open log file 
    parent->m_LogFile.open(strFileName, ios::app | ios::out, filebuf::sh_read); 

Ошибка: ошибка C2653: 'ИОС': это не класс или пространство имен имя

CString CReverseProxy::PutData(CString strData) 
{ 
    CString strSW = ""; 

    CString strPayload; 
    DWORD dwRet; 
    BYTE SendBuffer[MAX_LEN]; 
    BYTE RecvBuffer[MAX_RETURN_SIZE]; 
    ULONG ulSendLength = sizeof(SendBuffer); 
    ULONG ulRecLength = sizeof(RecvBuffer); 

    while ((strData.GetLength()/2) > 255) 
    { 
     strPayload = strData.Mid(0, 510); 
     strData  = strData.Delete(0, strPayload.GetLength());//error 

Ошибка: ошибка C2593: 'оператор =' неоднозначен.

ответ

1

Первой проблемой, вероятно, может быть исправлено использование std::ios в вашем открытии или using std::ios в начале файла.

Вторая проблема вызвана тем фактом, что CString::Delete возвращает int. Это определенно не то, что вы хотели бы присвоить strData, правильно? Просто удалите назначение, Delete изменит strData в любом случае.

+0

это тот же std :: ios_base – vikky

+0

Да. В общем, 'ios' наследует от' ios_base'. В VS, 'ios' на самом деле является typedef из' basic_ios', который наследуется от 'ios_base'. Таким образом, константы точно такие же, и вы можете использовать любой класс для доступа к ним. – eran

+0

Я использовал, но проблема осталась такой же для первой ошибки ........ – vikky

Смежные вопросы