C ++头文件和cpp文件fpermisive

时间:2015-11-18 17:36:51

标签: c++

我的时间非常短暂,我无法弄清楚我在这里做错了什么。

我正在尝试将3个类对象链接在一起,但我一直收到错误,我在互联网上找不到任何答案。

我想知道如何正确制作.h和.cpp文件。

也许你们中的一些人会看到我做错了什么。我希望顺便分开代码。

EDIT1: 这是我得到的错误,我的错误:在recette / ListeRecettes.cpp中包含的文件中:8:0: recette / ListeRecettes.h:23:42:erreur:ISO C ++禁止声明'ajouterRecette'没有类型[-fpermissive]

Edit2:ISO C ++禁止声明'ajouterRecette'没有类型[-fpermissive] 一样 编辑3:对不起的评论中的抱歉文件名。

这里是标题

/* 
 * File:   ListeRecettes .h
 * Author: Necro
 *
 * Created on November 17, 2015, 1:51 PM
 */

#ifndef LISTERECETTES_H
#define LISTERECETTES_H

#include <vector>  //for std::vector
#include "iostream"
#include "Recette.h"


class ListeRecettes {
private:
    std::vector<Recette*> recettes;

public:
    ListeRecettes();
    ListeRecettes(const ListeRecettes& orig);
    void ajouterRecette(const Recette& recette);
    void enleverRecette(const Recette& recette);
    void afficher();
    virtual ~ListeRecettes();
};

#endif  /* RECETTES_H */

这里是.cpp

/* 
 * File:   ListeRecettes .cpp
 * Author: Necro
 * 
 * Created on November 17, 2015, 1:51 PM
 */

#include "ListeRecettes.h"
#include <vector>  //for std::vector
#include "iostream"

ListeRecettes::ListeRecettes() {
}

ListeRecettes::ListeRecettes(const ListeRecettes& orig) {
}

ListeRecettes::ajouterRecette(const Recette& recette) {
    this->recettes.push_back(recette);
}

ListeRecettes::enleverRecette(const Recette& recette) {
    for (int i = 0; i < recettes.size(); i++) {
        if (recettes.at(i).getNom() == recette.getNom()) {
            recettes.erase(i);
        }
    }
}

ListeRecettes::afficher(){
    for(int i = 0 ; i < recettes.size(); i ++){
        std::cout << recettes.at(i).getNom();
    }
}

ListeRecettes::~ListeRecettes() {
}

Edit4: Recette.h

/* 
 * File:   Recette.h
 * Author: Necro
 *
 * Created on November 17, 2015, 3:14 PM
 */

#ifndef RECETTE_H
#define RECETTE_H

#include <vector>  //for std::vector
#include "Ingredient.h"
#include "iostream"

using namespace std;

class Recette {
public:
    Recette();
    Recette(const Recette& orig);
    Recette(string& , Ingredient&);
    string getNom();
    Ingredient getIngredient();
    virtual ~Recette();
private:
    string nom;
    vector<Ingredient*> listeIngredients;
};

#endif  /* RECETTE_H */

Recette.cpp

/* 
 * File:   Recette.cpp
 * Author: Necro
 * 
 * Created on November 17, 2015, 3:14 PM
 */

#include "Recette.h"
#include "iostream"

using namespace std;

Recette::Recette() {
}

Recette::Recette(string& nom, Ingredient ingredient) {
    this->nom = nom;
    this->listeIngredients.push_back(ingredient);
}

Recette::Recette(const Recette& orig) {
}

Recette::getNom(){
    return this->nom;
}
Recette::getIngredient(){
    return this->listeIngredients;
}

Recette::~Recette() {
}

Ingredient.h

/* 
 * File:   Ingredient.h
 * Author: Necro
 *
 * Created on November 17, 2015, 2:18 PM
 */

#ifndef INGREDIENT_H
#define INGREDIENT_H

#include <iostream>
using namespace std;

class Ingredient {


public:
    Ingredient();
    Ingredient(string&,int);
    Ingredient(const Ingredient& orig);
    void addIngredient(int quantite);
    void removeIngredient(int quantite);
    virtual ~Ingredient();

private:
    string nom;
    int quantite;
};



#endif  /* INGREDIENT_H */

Ingredient.cpp

/* 
 * File:   Ingredient.cpp
 * Author: Necro
 * 
 * Created on November 17, 2015, 2:18 PM
 */

#include "Ingredient.h"

Ingredient::Ingredient() {
}

Ingredient::Ingredient(string &nom, int quantite) :
nom(nom), quantite(quantite) {
    this->nom = nom;
    this->quantite = quantite;
}

Ingredient::Ingredient(const Ingredient& orig) {
}

Ingredient::addIngredient(int quantite) {
    this->quantite += quantite;
}
Ingredient::removeIngredient(int quantite){
    this->quantite -= quantite;
}

Ingredient::~Ingredient() {
}

1 个答案:

答案 0 :(得分:1)

你的签名肯定是错的。

除了构造函数和析构函数之外,您必须定义返回类型。

这样的事情:

void ajouterRecette(const Recette& recette);
void enleverRecette(const Recette& recette);
void afficher();

然后相应地更新cpp。

然后你可以发布错误!