no matching function for call
May 31, 2009 at 10:28am
Hey all,
I have a problem with my code here, and i don't know how fix this.
Here's the code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
#include "Company.h"
#include "Casual.h"
#include "Manager.h"
#include "StaffMember.h"
#include <vector>
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
Company::Company()
{
cout << "Would you like to load a file? (Y/N)" << endl;
char FileLoadChoice;
cin >> FileLoadChoice;
vector<StaffMember*> VSM;
if (FileLoadChoice == 'Y' || 'y')
{
string FileName;
cout << "Enter your filename, including the path and file type." << endl;
cin >> FileName;
ifstream in_stream;
ofstream out_stream;
in_stream.open("FileName");
in_stream >> Company::name;
int ID;
string WorkType, Name1, Name2;
double Numeric1, Numeric2;
while (WorkType != "END")
{
in_stream >> WorkType >> ID >> Name1 >> Name2 >> Numeric1 >> Numeric2;
if (WorkType == "Manager" || WorkType == "Casual")
{
if (WorkType == "Manager")
{
VSM.push_back(Manager::Manager(ID, (Name1 + Name2), Numeric1));
}
if (WorkType == "Casual")
{
VSM.push_back(Casual::Casual(ID, (Name1 + Name2), Numeric1, Numeric2));
}
}
}
}
cout << "Payroll for " << Company::name << endl;
cout << "====================================" << endl;
cout << "ID Name Type Wage" << endl;
}
|
This results in the error:
38 C:\Dev-Cpp\Company.cpp no matching function for call to `std::vector<StaffMember*, std::allocator<StaffMember*> >::push_back(Manager)'
Does anyone here know how to fix this?
Cheers in advance.
May 31, 2009 at 1:08pm
VSM stores pointers to StaffMembers, not StaffMembers themselves. Construct with new.
May 31, 2009 at 2:52pm
VSM stores pointers to StaffMembers, not StaffMembers themselves. Construct with new. |
Can you be more specific?
May 31, 2009 at 3:11pm
new Manager(ID, (Name1 + Name2), Numeric1)
Topic archived. No new replies allowed.