简体   繁体   中英

no instance of overloaded function matches the argument list c++

I'm a little confused by this error that I'm having (I'm using VS2012).

Here's my code: RecipeBook.h:

#ifndef RECIPEBOOK_H
#define RECIPEBOOK_H
#include "SingleRecipe.h"
using namespace std;

class RecipeBook
{
private:
    vector<SingleRecipe> *recipe;
    SingleRecipe *one;
public:
    RecipeBook(vector<SingleRecipe> *recipe);
    void addRecipe(SingleRecipe *one);
    bool removeRecipe(string name);
    vector <SingleRecipe> *returnListOfRecipes(double time);
};
#endif

SingleRecipe.h:

#ifndef SINGLERECIPE_H
#define SINGLERECIPE_H
#include <string>
#include <vector>
using namespace std;

class SingleRecipe
{
private:
    string name;
    vector<string> ingredients;
    vector<string> method;
    int numOfServing;
    double time;
public:
    SingleRecipe(string name, vector<string> ingredients, vector<string> method, int numOfServing, double time);
    string getName();
    void setName();
    int getNumOfServing();
    void setNumOfServing();
    double getTime();
    void setTime();
    string toString();
};
#endif

BookAndRecipe.cpp:

#include "RecipeBook.h"
#include "SingleRecipe.h"
#include <sstream>
#include <math.h>
using namespace std;

vector <SingleRecipe> *RecipeBook::returnListOfRecipes(double time)
{
    vector<SingleRecipe> *two;
    for (int i = 0; i = recipe->size(); i++)
    {
        if (recipe[i].data()->getTime < time)
        {
            *two->push_back(recipe[i].pop_back());
        }
    }
    return NULL;
}

Over at returnListOfRecipes() I get this error:

no instance of overloaded function "std::vector<_Ty, _Alloc>::push_back [with _Ty=SingleRecipe, _Alloc=std::allocator<SingleRecipe>]" matches the argument list
            argument types are: (void)
            object type is: std::vector<SingleRecipe, std::allocator<SingleRecipe>> c:\Users\Ventus\Documents\Visual Studio 2012\Projects\Recipe\Recipe\BookAndRecipe.cpp   83  8

I suspect it might have something wrong with my for loop, but I'm not very experienced, so I might be doing something very wrong here.

I appreciate all help that's given!

pop_back() doesn't return a value, it just drops the last element of the container. You probably want:

*two->push_back(recipe[i].back());
recipe[i].pop_back();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM