Я новичок в C ++, и я получил это сообщение об ошибке:
g ++ -Wall -c -o inventaire.o inventaire.cpp
В файле, включенном в inventaire.cpp: 11:
./inventaire.h:57:11: ошибка: неизвестное имя типа «IngredientsRecette»;Вы имели в виду ListeIngredientsRecette?
Liste <IngredientsRecette> listeIngRecette;
……… ... ^ ~~~~~~~~~~~~~~~~~
ListeIngredientsRecette
./inventaire.h: 44: 7: примечание: здесь объявлено «ListeIngredientsRecette»
class ListeIngredientsRecette {
…… .. ^ 1 генерируется ошибка.
make: *** [inventaire.o] Ошибка 1
Объяснение
Это не из-за компилятора, потому что без объявления Liste<IngredientsRecette> listeIngRecette;
. Работает без каких-либо сообщений об ошибках. Я использую make-файл. Первый раз, так что скажите мне, если я делаю неправильно, чтобы я мог улучшить. Да, я знаю, что это французский.
Вот мой заголовочный файл:
#if !defined(_INVENTAIRE__H_)
#define _INVENTAIRE__H_
#include <iostream>
#include <string>
#include "date.h"
#include "liste.h"
using namespace std;
....
class ListeIngredientsRecette {
public:
ListeIngredientsRecette() {}
ListeIngredientsRecette& operator += (const ListeIngredientsRecette& liste);
ListeIngredientsRecette& operator *= (int quantite);
private:
Liste<IngredientsRecette> listeIngRecette;
friend std::istream& operator >> (std::istream&, ListeIngredientsRecette&);
friend std::ostream& operator << (std::ostream&, const Date& date);
friend class ListeIngredientsRecette;
friend class IngredientsRecette;
friend class IngredientInventaire;
friend class Inventaire;
};
class IngredientsRecette {
public:
IngredientsRecette()
: nom(""), quantite(0) {}
IngredientsRecette(const string& nomRecette, const int & qt)
: nom(nomRecette), quantite(qt) {}
string nom;
int quantite;
private:
friend class ListeIngredientsRecette;
friend class IngredientsRecette;
friend class IngredientInventaire;
friend class Inventaire;
};