| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > error C2679: binary '=' : no operator… |
| Автор: nicvc 1.3.2007, 21:19 |
| VC++6, ADO, MSSQL В функции добавления в дерево узлов из БД – вот такая ошибка: error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class _variant_t' (or there is no acceptable conversion) Код такой: // чтение полей таблицы int iElementID = -1; //long iElementID = -1; int iParentID = -1; // long iParentID = -1; CString strName; if (m_pRS->Fields->Item["ElementID"]->ActualSize > 0) { iElementID = m_pRS->Fields->Item["ElementID"]->Value; /////////// } if (m_pRS->Fields->Item["ParentID"]->ActualSize > 0) { iParentID = m_pRS->Fields->Item["ParentID"]->Value; //////////// } if (m_pRS->Fields->Item["ElementName"]->ActualSize > 0) { strName = m_pRS->Fields->Item["ElementName"]->Value; /////////// strName.TrimRight(); } Три ошибки в строках, отмеченных /////////. Если int поменять на long, то ошибка только одна – в строке с strName. Добавлял вот это: #include <iostream> #include <algorithm> #include <fstream> #include <string> #include <vector> #include <iterator> #include <functional> #include <stdlib.h> using namespace std; не помогло. Ставил перед знаком = знак + - тоже не помогло. Подскажите, в чем дело? Кто-нибудь встречался? |
| Автор: Earnest 2.3.2007, 16:26 |
| Делай явное преобразование: для всех интов пиши так: int abc = (unsigned)v; для строк так: CString str = (LPCTSTR)(_bstr_t)v; Ничего дополнительно включать не нужно. |
| Автор: nicvc 2.3.2007, 20:50 |
| Благодарю. Начал с первого инта и сразу понял, что не знаю как использовать подсказку. Пробовал так: int v = -1; int iElementID = (unsigned)v; Ошибка та же. А со строкой тем более даже не знаю с чего начать. Подскажите пожалуйста поподробнее применительно к моему коду. |
| Автор: Greeen 2.3.2007, 23:42 | ||
Попробуй так
|
| Автор: nicvc 3.3.2007, 01:33 |
| Благодарю. Строка работает. А с интами ничего не получается. Пробовал даже аналогично строке. Ситуацию портит то, что необходимо присваивать значение -1 и то, что далее присваивается m_pRS, т.е. не зная логики все не так просто. Помогите еще с интами. |
| Автор: Greeen 3.3.2007, 13:07 | ||
|
| Автор: nicvc 3.3.2007, 21:45 |
| Не работает. Ошибка такая: error C2440: 'type cast' : cannot convert from 'class _variant_t' to 'unsigned int' Не понятно, что делать со значением -1? PS: Я тут копнул откуда у меня этот код и выяснил, что из работающего кода, но он сделан в VisualStudio6. У меня VS6 нет, только VC++6. Может все-таки дело в отсутствии каких-то библиотек? |
| Автор: nicvc 4.3.2007, 23:52 |
| Благодарю. Так работает: int iElementID = -1; iElementID = (long)m_pRS->Fields->Item["ElementID"]->Value; |