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

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

Восстановить пароль Регистрация
 
alexei-evil
2 / 2 / 1
Регистрация: 12.06.2008
Сообщений: 38
10.04.2010, 18:52     error C2664: платформа Visual C++ 2008 #1
Всем доброго времени суток! Изучаю сейчас 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 C2664. Исправьте пожалуйста
C++ error C2664:невозможно преобразовать параметр
C++ error C2664
C++ error C2664
Error 1 error C2664: 'CharToOemW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR' C++
Шаблоны и error C2664 C++
Ошибка error C2664 C++
Ошыбка - error C2664 C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
10.04.2010, 19:41     error C2664: платформа Visual C++ 2008 #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  [ТС]     error C2664: платформа Visual C++ 2008 #3
Вот действительно. Как я смотрел? Спасибо большое! Я просто лох!
Я то думал там что-то серьезное...
Yandex
Объявления
10.04.2010, 22:27     error C2664: платформа Visual C++ 2008
Ответ Создать тему
Опции темы

Текущее время: 00:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru