2013-12-02 14 views
-2

Я не уверен, почему я получаю эту ошибку. Функция должна возвращать true или false. Все переменные были определены, и ошибка, я получаю:как исправить ошибку компилятора undefined reference

/tmp/ccTspEHr.o: In function `main': 
rectangles.cpp:(.text+0x169): undefined reference to `rectangle_name(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<Rectangle, std::allocator<Rectangle> >)' 
rectangles.cpp:(.text+0x310): undefined reference to `rectangle_name(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<Rectangle, std::allocator<Rectangle> >)' 
rectangles.cpp:(.text+0x7b0): undefined reference to `rectangle_name(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<Rectangle, std::allocator<Rectangle> >)' 
collect2: ld returned 1 exit status 

Прототип функции: определение

bool rectangle_name(string prompt, string invalid, string used, string n, vector<Rectangle> rectangle); 

функции:

bool rectangle_name(string prompt, string invalid, string used, string & n, vector<Rectangle> rectangle) 
//This function reads in a prompt and reads in the name of the rectangle or stop\ 

{ 
    cout << prompt; 
    getline (cin, n); 
    // do other stuff and return true or false 
} 

Что вызывает эти ошибки?

+2

Двойная проверка вашей подписи по сравнению с определением. Они не совпадают (параметр 'n'). – crashmstr

+0

При размещении вопросов об ошибках, пожалуйста, разместите ошибку с вопросом, полным и неотредактированным. Измените свой вопрос, чтобы включить ошибки. Также, пожалуйста, покажите объявление переменных. –

+1

Пожалуйста, отредактируйте свой код как [Short, Self Contained, Correct Example] (http://sscce.org/). – Varaquilex

ответ

2

Вы объявили

bool rectangle_name(string prompt, string invalid, string used, string n, vector<Rectangle> rectangle); 
                   ^^^^^^^ 

и определил

bool rectangle_name(string prompt, string invalid, string used, string & n, vector<Rectangle> rectangle) 
                   ^^^^^^^ 

См четвертый параметр? Объявление string n и определение string & n. Они не совпадают. Сделайте эти два совпадения, и ошибка исчезнет.

2

Это очень просто. Вы должны определить функцию. Вы объявили функцию как

bool rectangle_name(string prompt, string invalid, string used, string n, vector<Rectangle> rectangle); 

но определена еще одна функция

bool rectangle_name(string prompt, string invalid, string used, string & n, vector<Rectangle> rectangle) 

обратите внимание на объявление параметра с именем «п».

Смежные вопросы