2010-12-06 3 views
2

Мой заголовок функции заключается в следующем:Почему компилятор не видит этот заголовок?

void FileIO::write(LinkedList<Librarian>& librarians, int numlibrarians, 
        LinkedList<Patron>& patrons, int numpatrons, 
        LinkedList<LinkedList<Item> >[] items, int numitems, 
        int currid) 

Заголовок в моей .h это:

void write(LinkedList<Librarian>&, int, LinkedList<Patron>&, int, 
      LinkedList<LinkedList<Item> >[], int, int); 

И все же, когда я пытаюсь скомпилировать свою программу, я получаю эту ошибку:

FileIO.cpp:923: error: prototype for ‘void FileIO::write(
LinkedList<Librarian>&, int, LinkedList<Patron>&, int, 
LinkedList<LinkedList<Item> >*)’ does not match any in class ‘FileIO’ 

Зачем это было? Кажется, что каждый из моих заголовков, где я положил > >[], не распознается. Есть ли другой способ сделать это?

+0

Пожалуйста, поставьте несколько новых строк в своих блоках кода. – robert 2010-12-06 00:22:14

ответ

2

Это C++, так LinkedList<LinkedList<Item> >[] items не имеет смысла, так как это Java конструкт. На самом деле парсер рано взлетает, так как думает, что [] - это какой-то токен, который действительно странный. Замените LinkedList<LinkedList<Item> > items[], и вам должно быть хорошо.

+0

Действительно. Взял Java последние два семестра, а затем в этом семестре они переключили меня на C++. Это конец семестра, и я до сих пор не привык к синтаксису. Спасибо всем, кто ответил. – 2010-12-06 04:25:04

2

Попробуйте изменить

LinkedList<LinkedList<Item> >[] items 

в

LinkedList<LinkedList<Item> > items[] 
0

Похоже, что функция write() в строке 923 отсутствует два целочисленных параметра, которые необходимы для соответствия им деклараций.

+0

Я думаю, что отсутствующие параметры `int` отражают то, что компилятор прервал синтаксический анализ функции, когда увидел и не мог понять` [] items`, а не что `int` отсутствовали в коде. По крайней мере, я надеюсь, что оригинальный плакат говорит о правильной строке кода. – robert 2010-12-06 01:01:26

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