С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/29: Рейтинг темы: голосов - 29, средняя оценка - 4.52
1 / 1 / 0
Регистрация: 30.09.2015
Сообщений: 35
Записей в блоге: 1

Ошибка 2, error C2668: pow: неоднозначный вызов перегруженной функции

13.10.2015, 16:07. Показов 6126. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь разобраться с функциями. И потому усложнил обычный пример. Вылезла ошибка:
Ошибка 2, error C2668: pow: неоднозначный вызов перегруженной функции
Хотел спросить. Что сделал не так? Связана с pow в int varA(int) и int varB(int).

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
#include <iostream>
#include <cmath>
int varA(int);
int varB(int);
 
int main()
{
    int  a = 0;
    std::cout << "Set value for a: ";
    std::cin >> a;
    int b =0;
    std::cout << "Set value for b: ";
    std::cin >> b;
    int summary1 = varA(a);
    int summary2 = varB(b);
    int summary3 = summary1 + summary2;
    std::cout << "Value of a is: " << a << std::endl;
    std::cout << "Value of b is: " << b << std::endl;
    std::cin.get();
    return 0;
}
int varA(int va)
{
    int summary1 = pow(va,2);
    return summary1;
}
int varB(int vb)
{
    int summary2 = pow(vb,2);
    return summary2;
}
И еще кое-что. Где найти хороший задачник для с++ с решениями?

И насколько верно я выбрал язык с++ в качестве первого языка программирования?
Я так понимаю, что сейчас в основном прибыль в веб-разработках идет. А это, вроде как: Java, Python, PHP, HTML, CSS и многие другие.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.10.2015, 16:07
Ответы с готовыми решениями:

Error C2668: pow: неоднозначный вызов перегруженной функции
#include &lt;math.h&gt; //библиотека, содержащая описание математических операторов #include &lt;conio.h&gt; //библиотека, содержащая описание...

Ошибка: error C2668: abs: неоднозначный вызов перегруженной функции - C++
Мне выкидывает ошибку при сборке. 1&gt; CCRakNetSlidingWindow.cpp 1&gt;..\Common\RakNet\CCRakNetSlidingWindow.cpp(221): error C2668: abs:...

Ошибка: error C2668: abs: неоднозначный вызов перегруженной функции
Мне выкидывает ошибку при сборке. 1&gt; QueueTest.cpp 1&gt;c:\documents and settings\администратор\рабочий...

7
 Аватар для Goldutop
10 / 10 / 10
Регистрация: 04.09.2014
Сообщений: 62
13.10.2015, 16:28
Witson, попробуй
C++
1
2
3
4
5
6
7
8
9
10
double varA(int va)
{
    double summary1 = pow(va,2);
    return summary1;
}
double varB(int vb)
{
    double summary2 = pow(vb,2);
    return summary2;
}
и

C++
1
2
3
double summary1 = varA(a);
double summary2 = varB(b);
double summary3 = summary1 + summary2;
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
13.10.2015, 16:34
Лучший ответ Сообщение было отмечено Witson как решение

Решение

Witson, опишите функции либо так:
C++
1
2
3
4
5
int varA(int va)
{
    int summary1 = pow((double)va,2);
    return summary1;
}
либо так:
C++
1
2
3
4
5
int varB(double vb)
{
    int summary2 = pow(vb,2);
    return summary2;
}
1
1 / 1 / 0
Регистрация: 30.09.2015
Сообщений: 35
Записей в блоге: 1
13.10.2015, 17:37  [ТС]
Goldutop,
Спасибо, но нет. Не сработало.

SatanaXIII,
Спасибо.
2ой вариант не сработал, а вот 1ый пошел. А почему именно double требуется? И отчего не сработал 1ый вариант? Произошел конфликт между int и double? Это я пальцем в небо тыкаю.

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
#include <iostream>
#include <cmath>
int varA(int);
int varB(int);
 
int main()
{
    int  a = 0;
    std::cout << "Set value for a: ";
    std::cin >> a;
    int b =0;
    std::cout << "Set value for b: ";
    std::cin >> b;
    int summary1 = varA(a);
    int summary2 = varB(b);
    int summary3 = summary1 + summary2;
    std::cout << "Value of a is: " << summary1 << std::endl;
    std::cout << "Value of b is: " << summary2 << std::endl;
    std::cout << summary1 << " + " << summary2 << " = " << summary3 << std::endl;
    std::cin.get();
    return 0;
}
int varA(int va)
{
    int summary1 = pow((double)va,2);
    return summary1;
}
int varB(int vb)
{
    int summary2 = pow((double)vb,2);
    return summary2;
}
И можно как-то обойтись без ввода summary1, summary1?
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
14.10.2015, 08:45
Лучший ответ Сообщение было отмечено Witson как решение

Решение

Цитата Сообщение от Witson Посмотреть сообщение
Произошел конфликт между int и double?
Произошел конфликт преобразования между double и long double.
Функция pow принимает первым параметром число с плавающей точкой. Вы ему подсовываете целочисленное значение. Компилятор хочет сам разобраться какую именно ему функцию вызвать ( pow(float,...), pow(double,...), pow(long double,...) ) и не может. Надо конкретно ему указать.

Цитата Сообщение от Witson Посмотреть сообщение
Это я пальцем в небо тыкаю
А не надо тыкать. Читайте ошибки, которые выдает компилятор - там все написано.

Цитата Сообщение от Witson Посмотреть сообщение
И можно как-то обойтись без ввода summary1, summary1?
Не очень понял, но типа вот того:
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
#include <iostream.h>
#include <cmath>
int varA(double); // Вот тут еще
int varB(int);
 
int main()
{
    int  a = 0;
    std::cout << "Set value for a: ";
    std::cin >> a;
    int b =0;
    std::cout << "Set value for b: ";
    std::cin >> b;
    std::cout << "Value of a is: " << a << std::endl;
    std::cout << "Value of b is: " << b << std::endl;
    std::cout << "Summary: " << (varA(a) + varA(b)) << std::endl;
    std::cin.ignore(2);
    return 0;
}
int varA(double va) // И вот тут
{
    return pow(va,2);
}
int varB(int vb)
{
    return pow((double)vb,2);
}
1
1 / 1 / 0
Регистрация: 30.09.2015
Сообщений: 35
Записей в блоге: 1
16.10.2015, 00:11  [ТС]
SatanaXIII,
Да, именно это я имел и ввиду. Спасибо! Очень помогли.

Писал я int оттого, что собирался вводить лишь целочисленные значения. Тогда почему double лучше в данном случае? Читал, что лучше использовать наименьший тип по возможности.
0
Модератор
Эксперт С++
 Аватар для zss
13770 / 10963 / 6491
Регистрация: 18.12.2011
Сообщений: 29,240
16.10.2015, 08:46
Лучший ответ Сообщение было отмечено Witson как решение

Решение

Witson, нет функции pow(int,int);. Поэтому надо 1 аргумент привести к double,
чтобы компилятор использовал функцию pow(double,int);
А в принципе, по возможности не используйте pow для возведения целого в целое.
C++
1
2
3
4
int varA(int va)
{
    return va*va;
}
1
1 / 1 / 0
Регистрация: 30.09.2015
Сообщений: 35
Записей в блоге: 1
17.10.2015, 03:31  [ТС]
zss,
Благодарю, не знал.
Думал о том, чтобы просто умножить друг на друга, но хотелось "выпендриться" и использовать функцию pow.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.10.2015, 03:31
Помогаю со студенческими работами здесь

Ошибка в программе error C2668: std::to_string: неоднозначный вызов перегруженной функции
FILE *f1; f1 = fopen(&quot;matrix.txt&quot;, &quot;w&quot;); for (unsigned int i = 0; i &lt; matrix.size(); i++) { vector&lt;double&gt; s =...

Error C2668: sqrt: неоднозначный вызов перегруженной функции
Что не так? Ma= sqrt ((2*b^2 + 2 * c^2 - a^2)/4); Mb= sqrt ((2*a^2 + 2 * c^2 - b^2)/4); Mc= sqrt ((2*a^2 + 2 * b^2 - b^c)/4); ...

Error C2668: std::to_string: неоднозначный вызов перегруженной функции
вот код #include &quot;stdafx.h&quot; #include &lt;Windows.h&gt; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int...

Ошибка C2668: mult: неоднозначный вызов перегруженной функции
Помогите пожалуйста, не знаю как правильно избавиться от ошибки. Исчезает только если из объявления в параметрах (33 строчка) убрать...

Ошибка C2668: sqrt: неоднозначный вызов перегруженной функции
Добрый вечер. Это опять я, чайник. Решаю такую задачу: &quot;Вывести на экран N-ое число из ряда Фибоначчи&quot;. Использую формулу Бине ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru