2015-11-08 6 views
0

Я пытаюсь реализовать виртуальную функцию, которая находится в файле .h в моем .cpp-файле. Это для назначения, поэтому я не могу просто сделать функцию не виртуальной. Это функция клонирования, которая вызывает конструктор копирования класса. Функция:Функция клонирования в C++

virtual Item* clone() const; 

в классе

Ingredient : public Item { 

Когда я реализую это в моем файле Ingredient.cpp, у меня есть:

Ingredient::clone() const { 
    return new Ingredient (*this); 
} 

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

Ingredient.cpp: 23: 13: error: C++ требует спецификатора типа для всех объявлений

Ingredient::clone() const { 
     ^

Ingredient.cpp: 24: 9: ошибка: не удается инициализировать обратный объект типа 'INT' с RValue типа 'Ингредиент *'

return new Ingredient (*this); 
      ^~~~~~~~~~~~~~~~~~~~~~~~ 

2 ошибок, генерируемых.

Я не понимаю, что я здесь делаю неправильно, потому что я должен использовать разыменованный * этот указатель. Какие-либо предложения?

+0

Отсутствует тип возвращаемого значения в сигнатуре функции .. http://ideone.com/J0U8wv – Brandon

ответ

1

Вы забыли тип возврата в реализации функции.

Item* Ingredient::clone() const { 
// ^^ Missing 
+0

Что-то так просто ... но это была проблема. Спасибо! – ComputerScientist123

+0

@camcovington, добро пожаловать. –

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