Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
alexei-evil
2 / 2 / 1
Регистрация: 12.06.2008
Сообщений: 38
#1

error C2664: платформа Visual C++ 2008 - C++

10.04.2010, 18:52. Просмотров 713. Ответов 2
Метки нет (Все метки)

Всем доброго времени суток! Изучаю сейчас Visual Studio 2008. Компилятор выдает вот такую ошибку:

error C2440: приведение типов: невозможно преобразовать 'wmain::Blocknotes' в 'char *'
1> Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен

Вот в этой строке: FILE.write((char*)b,sizeof(b[i]));

Подскажите, в чем проблема? Ошибка, судя по сообщениям форума, достаточно часто встречающаяся. Так-что многим должен быть интересен ответ на этот вопрос.
Код полностью набран из учебника Visual C++ 2008 для начинающих. По идее должен работать.
Спасибо!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include"stdafx.h"
#include<iostream>
#include<fstream>
#include<conio.h>
#include<stdio.h>
int _tmain(int argc, _TCHAR* argv[])
{ 
using namespace std;
struct Blocknotes
{
char name[30];
char phone[15];
int age;
}
b[2]={
"Smith", "123-12-56",45,
"Kolly", "456-78-90",50
};
// Запись данных в файл
ofstream FILE;
FILE.open("block",ios::binary);
for(int i=0;i<2;i++)
FILE.write((char*)b[i],sizeof(b[i]));     // Здесь ошибка
FILE.close();
// Чтение из файла
ifstream FILE1;
FILE1.open("block",ios::binary);
Blocknotes bb[2];
int i=0;
while(!FILE1.eof())
{
if(i==2)
goto m;
FILE1.read((char*)&bb[1],sizeof(bb[i]));
cout << "string" << i << " " << bb[i].name << " " << bb[i].phone << " " << bb[i].age << endl;
i++;
}
m: FILE.close();
// sistem("DEL BLOCK");
_getch();
}

Добавлено через 1 час 31 минуту
С этим разобрался. Оказывается забыл поставить & перед b[i].
Но теперь другая проблема. Резыльтат выполнения меня обескуражил:
String0 иЩ0 >iXхн7Хх 234
String1 Kolly 4567890 50

То есть получается, что вторая строка считалась и вывелась на экран правильно, а вот с первой произошли какие-то непонятные метаморфозы.
Кто-нибудь знает - почему?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2010, 18:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос error C2664: платформа Visual C++ 2008 (C++):

Error 1 error C2664: 'CharToOemW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR' - C++
выдает вот такую ошибку - Error 1 error C2664: 'CharToOemW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR' использую visual...

error C2664 - C++
ошибка: error C2664: 'strcmp' : cannot convert parameter 1 from 'int' to 'const char *' вот к этому коду: case '3': // Поиск...

error C2664 - C++
Помогите пожалуйста исправить ошибку : ошибка: Ошибка 1 error C2664: void ATL::CStringT&lt;BaseType,StringTraits&gt;::Format(const wchar_t...

Шаблоны и error C2664 - C++
Всем доброго времени суток!!! В общем, есть класс template &lt;class Info&gt; class SimpleClientManager { public: ...

Ошыбка - error C2664 - C++
Тренируюсь по видео уроку писать игрушку волейбол и возникла ошибка - error C2664: 'glutSpecialFunc' : cannot convert parameter 1 from...

Ошибка error C2664 - C++
Не могу понять в чем ошибка, все из-за того что поменял компилятор, старый работал нормально, никаких ошибок не выдавал. Сейчас VS 2012 ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,277
10.04.2010, 19:41 #2
ошибка как раз при считывании из файла
C
1
FILE1.read((char*)&bb[1], sizeof(bb[i]));
замени на
C
1
FILE1.read((char*)&bb[i], sizeof(bb[i]));
alexei-evil
2 / 2 / 1
Регистрация: 12.06.2008
Сообщений: 38
10.04.2010, 22:27  [ТС] #3
Вот действительно. Как я смотрел? Спасибо большое! Я просто лох!
Я то думал там что-то серьезное...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2010, 22:27
Привет! Вот еще темы с ответами:

Error C2664 в cin.getline() - C++
Всем привет.Пишу телефонную книгу в консоли ,при попытке заполнить поля структуры вылазит ряд ошибок ,типа error C2664:...

Error C2664: Преобразование аргументов - C++
При компиляции выскочили следующие ошибки: 1&gt;dllmain.cpp(38): error C2664: &quot;uintptr_t _beginthread(void (__cdecl *)(void *),unsigned...

error C2664: невозможно преобразовать параметр - C++
Здравствуйте. Отправьте меня если что в другую тему, где это обсуждалось, но я не понимаю, в чем собственно дело void grouping(int n,...

error C2664:невозможно преобразовать параметр - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; #include &lt;cstring&gt; #define q 250 struct sanat{ string Name; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru