Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.70
Dead By Sunrise
0 / 0 / 0
Регистрация: 21.10.2010
Сообщений: 10
#1

cannot convert from 'int *' to 'double *' - C++

21.10.2010, 12:17. Просмотров 2793. Ответов 6
Метки нет (Все метки)

Помогите пожалуйста исправить ошибку: error C2440: '=' : cannot convert from 'int *' to 'double *'.

C++
1
2
3
4
5
6
7
8
#include <iostream.h>
void main()
{
    double *p;
    int a=15;
    p=&a;
    cout<<*p;
}
Суть задания в том, что необходимо присвоить указателю *p на double значение переменной a=15 с типом int, и вывести это значение на экран через указатель (cout<<*p; ). Я понимаю, что главная проблема состоит в невозможности преобразовать тип Int к типу Double. Операция преобразования типа, при замене строчки "p=&a;" на "p=double(&a);" (взятия адреса от переменной а), также не помогает. Главная сложность в задаче для меня заключается в том, чтобы, не изменяя типы данных double и int к какому-то одному типу (в первых двух строчках единственного блока программы), вывести значение переменной a (равное 15) на экран через указатель *p. Заранее огромное спасибо за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2010, 12:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос cannot convert from 'int *' to 'double *' (C++):

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)' - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #define row 5 #define col 5 using namespace...

Сannot convert ‘int (*)[10]’ to ‘int*’ for argument ‘4’ to ‘int - C++
Все вроде правильно..И в визуале работает а на линуксе(код блок) не работает.. #include &quot;mpi.h&quot; #include &lt;stdio.h&gt; #include...

ОШИБКА [Error] cannot convert 'int*' to 'float*' for argument '1' to 'void Syma(float*,int*,int) - C++
Какая то проблема с указателями,незнаю,не хочет щитать суму парних чисел в второй подпрограме.Извиниет за ошибки.Не владею руским.Помогите...

Исправить ошибки "cannot convert 'double (*)(double)' to 'double'" и "too many arguments to function" - C++
пожалуйста проверьте и помогите исправить ошибки: #include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;math.h&gt; #include&lt;stdlib.h&gt; ...

Преобразовать 2 числа int в 1 число float(double) | double int1.int2 - C++
Всем привет. Изучая азы C++, столкнулся с такой проблемой. Есть два значения типа int, их необходимо преобразовать в одно значение типа...

E2034 Cannot convert 'int *' to 'int' - C++
Помогите разобраться,почему вылазит ошибка Unit1.cpp(34): E2034 Cannot convert 'int' to 'int *' Unit1.cpp(34): E2342 Type mismatch...

6
KuKu
1558 / 1036 / 78
Регистрация: 17.04.2009
Сообщений: 2,993
21.10.2010, 12:37 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
 
int main()
{
    double* p=new double();
    int a=15;
    (*p)=(static_cast<double>(a));
 
    cout << (*p) << endl;
    
    system("pause");
    return(0);
}
Вроде так, если задание правильно понял.
1
Mencey
148 / 95 / 7
Регистрация: 22.07.2010
Сообщений: 426
21.10.2010, 16:15 #3
C
1
2
3
4
5
6
7
8
#include <iostream.h>
int main(void)
{
  double *p;
  int a = 15;
  p = (double*)&a;
  cout << *p;
}
2
Dead By Sunrise
0 / 0 / 0
Регистрация: 21.10.2010
Сообщений: 10
21.10.2010, 16:27  [ТС] #4
Цитата Сообщение от Mencey Посмотреть сообщение
C
1
2
3
4
5
6
7
8
#include <iostream.h>
int main(void)
{
  double *p;
  int a = 15;
  p = (double*)&a;
  cout << *p;
}
Хм, у меня при выводе на экран выдает значение 2.64187е-308
0
Mencey
148 / 95 / 7
Регистрация: 22.07.2010
Сообщений: 426
21.10.2010, 16:40 #5
Dead By Sunrise, а что вы ожидали!
0
Dead By Sunrise
0 / 0 / 0
Регистрация: 21.10.2010
Сообщений: 10
21.10.2010, 17:01  [ТС] #6
Цитата Сообщение от Mencey Посмотреть сообщение
Dead By Sunrise, а что вы ожидали!
А тогда я не совсем понимаю смысл строчки 6:
C++
1
p = (double*)&a;
В задаче необходимо вывести на экран значение 15, т. е. значение, присвоенное переменной а.

Вот мой вариант программы, однако мне хотелось бы обойтись без операции New, и полностью оставить первые две строчки главного блока без изменения, чтобы вывести "15" на экран. Возможно ли это?
C++
1
2
3
4
5
6
7
8
#include <iostream.h>
void main()
{
    double *p=new double;
    int a=15;
    *p=((double) a);
    cout<<*p<<endl;
}
0
Mr.X
Эксперт С++
3052 / 1697 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
22.10.2010, 13:55 #7
Стандарт рекомендует для приведения типов указателей использовать reinterpret_cast.
Вот так работает:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
void main()
{
    double*  p;
    int      a = 15;
    p = reinterpret_cast<double*>(&a);
    std::cout << *reinterpret_cast<int*>(p)
              << std::endl;
}
1
22.10.2010, 13:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2010, 13:55
Привет! Вот еще темы с ответами:

Cannot convert int to int* и обратно - C++
В общем есть код: //--------------------------------------------------------------------------- #include &lt;iostream.h&gt; #include...

malloc - cannot convert from 'void *' to 'double *' - C++
Здравствуйте. У меня тут текст программы для дискретного преобразования Фурье. Проблему составляют строчки, где есть комменты . Я смотрел в...

Cannot convert parameter 1 from 'double (__cdecl *) - C++
#include &quot;MyModule.h&quot; //--------------------------------------------------------- ///0,432549860229146 2221 //Функция: ...

Double, int , long double - C++
Как вычислить диапазоны типов вручную указанных в название темы?


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

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

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