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

Не могу скомпилировать ошибка, ссылка на неразрешенный внешний символ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Output total amount of numbers in the sequence (not summing -1 ) and than numbers themselves http://www.cyberforum.ru/cpp-beginners/thread967479.html
The input contains a sequence of positive integers not exceeding 1000. The sequence ends with -1.Total amount of numbers is not more than 100. Output total amount of numbers in the sequence (not summing -1 ) and than numbers themselves. Input:Sequence is not bigger that 100. Input: 1 3 5 -1 Output: 3 1 3 5
C++ Функция в трабл В чем проблема мне нужно проверить отсортирован ли массив по убыванию? void Sorten(int *Array, int n){ int i; k=0; j=0; for(i; i<n-1; i++) if(Array<Array) k++; else j++; if(k=n-1) cout << "Sorted\n"; http://www.cyberforum.ru/cpp-beginners/thread967477.html
C++ Сформировать целочисленный массив A(2n)
Ещё раз всем добрый вечер, часов я уже надоел, но всё же, помогите разобраться Дано натуральное число n. Сформировать целочисленный массив A(2n), элементами которого являются числа 1, 3, 5, . . . , 2n-1, 2n, 2n-2, 2n-4, . . . , 2. Есть исходный код: #include "stdafx.h" //подключение директив #include <stdio.h> #include <iostream> #include <stdlib.h> #include <math.h>...
C++ Корни квадратного уравнения, кратность случайного числа, процент от числа
Есть три задачи, если кто то когда то решал что подобное помогите плиз 1)Даны 3 вещественных числа. Найти корни квадратного уравнения или вывести что корней нет 2)Определить стоимость покупки если известно что скидка в 3% предоставляется если покупка больше 500 грн., а 5% когда стоимость больше 1000 грн. 3)Сгенерировано целое число в диапазоне от 200 до 300. Определить будет ли число...
C++ в функцию передается параметр const int * http://www.cyberforum.ru/cpp-beginners/thread967436.html
В функцию передается параметр const int *. Для чего этот const: для указателя или для значения по указателю? И как сделать, чтобы в функции не менялись и указатель, и значение? Заранее спасибо)
C++ Шифр Гронсфельда с++ Цезарь работает, а вот с Гронфельдом проблемы. #include <iostream> #include <string> using namespace std; int charToNum (char c) { return int(c)-97; } подробнее

Показать сообщение отдельно
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
02.10.2013, 22:02
Вандевурд Д., Джосаттис Н.М. - Шаблоны C++(2003)

6.6.1. Дешифровка ошибок-романов

Текст обычных сообщений об ошибках компиляции, как правило, является
лаконичным и отражающим суть ошибки. Например, когда компилятор говорит "class X has
no member ' fun'" (в классе X отсутствует член "fun"), то обычно не составляет
труда определить, что именно неверно в вашем коде (например, вы ошибочно ввели "run"
вместо "fun"). В случае шаблонов это не так. Рассмотрим относительно простой
фрагмент кода, в котором задействована стандартная библиотека C++. Он содержит
небольшую ошибку: используется list<string>, но поиск проводится с помощью объекта-
функции greater<int>, а не greater<string>:


std::list<std::string> coll

// Поиск первого элемента, большего "А"
std::list<std::string>::iterator pos;
pos = std::find_if(
coll.begin(),coll.end(), // Диапазон поиска
std::bind2nd(std::greater<int>(),"A"));// Критерий поиска
Такого рода ошибки часто случаются, когда программист вырезает и вставляет код,
но забывает внести в него необходимые изменения.
Одна из версий популярного компилятора GNU C++ выдает при этом приведенное
ниже сообщение об ошибке.



/local/include/stl/_algo.h: In function 'struct _STL::_Lis
t_iterator<_STL::basic_string<char,_STL::char_traits<char>/
__STL: :allocator<char> >,_STL: :_Nonconst__traits<_.STL: :basic_
string<char,_STL::char_traits<char>,_STL::allocator<char> >
> >_STL::find_if<_STL:: _List_.it era tor<_STL::basic_string<c
har,_STL::char_traits<char>,_STL::allocator<char> >,_STL::_
Nonconst_traits<_STL: :basic_string<char,_STL: : char_.traits<c
har>,_.STL: :allocator<char> > > >, _STL: :binder2nd<_STL: :gre
ater<int> > > (_STL: :_List_iterator<_.STL: :basic_string<char,
_STL::char_traits<char>,_STL::allocator<char> >,_STL::_Nonc
onst_traits<_STL::basic_string<char,_STL::char_traits<char>
,_STL::allocator<char> > > >,_STL::_List_iterator<_STL::bas
ic_string<char,_STL::char_traits<char>,_.STL::allocator<char
> >,_STL::_Nonconst_.traits<_.STL::basic_string<char,_STL::ch
ar_.traits<char>,_JSTL: :allocator<char> > > >,_STL::birider2nd
<_STL: :greater<int> >/__STL: : input_.it erator_tag) ' :/local/inc
lude/stl/_algo.h:115: instantiated from '_STL::find_if<_STL
::_List_Iterator<_.STL::basic_string<char,_STL::char_traits<i
char>,_STL::allocator<char> >,_STL::_.Nonconst_.traits<_STL::
basic_string<char,_STL::char_.traits<char>,_.STL::allocator<c
har> > > >, _STL::binder2nd<_STL::greater<int> > >(_STL::_L
ist_iterator<_STL: :basic_string<char,_STL: : char_.traits<char
>,_STL: :allocator<char> >,_STL: :Nonconst_traits<_STL: -.basic
_string<char,_STL::char_traits<char>,_STL:: allocator<char>
> > >,_STL::List_iterator<STL::basic_string<char,_STL::cha
r_traits<char>,_STL:: allocator<char> >,_STL::_Nonconst_tra
its<_STL::basic_string<char,_STL::char_traits<char>,_.STL::a
llocator<char> > > >_STL::binder2nd<_STL::greater<int> >)'t
estprog.cpp:18: instantiated from here/local/include/stl/_a
lgo.h:78: no match for call to •(_STL::binder2nd<_STL::grea
ter<int> >) (_STL::basic_string<char,_STL::char_traits<char
>,_STL::allocator<char> > &)¦/local/include/stl/_function.h
:261: candidates are: bool _STL::binder2nd<_STL::greater<in
t> >::operator ()(const int &) const




Такое сообщение на первый взгляд больше смахивает на роман, чем на
диагностическое сообщение, и одним своим видом способно полностью деморализовать новичков в
области шаблонов. Однако сообщения, подобные приведенному, при наличии некоторой
практики поддаются пониманию, и местонахождение ошибок можно легко определить.
В первой части нашего сообщения говорится, что ошибка произошла в экземпляре
шаблона функции (с ужасно длинным именем), запрятанном глубоко внутри
заголовочного файла / local /include/st 1 /_algo .h. Далее компилятор сообщает, почему он
сгенерировал этот конкретный экземпляр шаблона. В данном случае "отсчет" начинается
со строки 18 файла testprog.cpp (это файл, содержащий код нашего примера), в
которой вызывается генерация экземпляра шаблона f ind_if из строки 115 заголовочного
файла _algo. h. Компилятор сообщает все это для того, чтобы вы знали, что такие-то
экземпляры шаблонов сгенерированы, и смогли восстановить цепочку событий, которые
вызвали генерацию экземпляров шаблона.

Однако в случае нашего примера есть основания полагать, что должны быть инстанциро-
ваны все шаблоны. Но почему же тогда программа не работает? Ответ на этот вопрос
содержится в последней части сообщения, там, где говорится "no match for call" — это
означает, что вызов функции не может быть сгенерирован из-за несоответствия типов
аргументов и параметров. Более того, сразу же за этим в строке, содержащей "candidates are",
поясняется, что единственным типом-кандидатом является целочисленный тип (тип
параметра— const int&). Вернувшись назад, к строке 18, вы увидите std: :bind2nd
(std: :greater<int>(), "A") — строка действительно содержит целочисленный тип
(int), а он несовместим с объектами строкового типа, поиск которых проводится в нашем
>- примере. Стоит заменить <int> на std:: string — и проблема будет решена.
Нет сомнений в том, что сообщение об ошибке можно было структурировать получше.
Ничто не мешает опустить описание проблемы перед историей инстанцирования шаблонов,
а вместо развернутых имен наподобие "MyTemplate<YourTemplate<int> >"
выводить структурированные описания, например "MyTemplate<T>", где
Т = YourTemplate<int>, чтобы сократить чрезмерно длинные имена. Однако
нельзя отрицать и то, что вся информация в этом диагностическом сообщении в
некоторых ситуациях может оказаться весьма полезной. Поэтому не стоит удивляться
тому, что аналогичную информацию выдают и другие компиляторы (хотя в некоторых
из них используется упомянутая выше структуризация).
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru