我正在编写一个读取文本文件的程序,并将数据存储到一个名为User的对象类中。然后,我将User对象存储到一个名为MyList的模板化动态数组中,并使用push_back函数。
目前我的MyList类看起来像这样
#ifndef MYLIST_H
#define MYLIST_H
#include <string>
#include <vector>
using namespace std;
template<class type>
class MyList
{
public:
MyList();
~MyList();
int size() const;
int at(int) const;
void remove(int);
void push_back(type);
private:
type* List;
int _size;
int _capacity;
const static int CAPACITY = 80;
};
并且推回功能看起来像这样
template<class type>
void MyList<type>::push_back(type newfriend)
{
if( _size >= _capacity){
_capacity++;
List[_size] = newfriend;
size++;
}
}
我的用户类如下
#ifndef USER_H
#define USER_H
#include "mylist.h"
#include <string>
#include <vector>
using namespace std;
class User
{
public:
User();
User(int id, string name, int year, int zip);
~User();
private:
int id;
string name;
int age;
int zip;
MyList <int> friends;
};
#endif
最后,在我的main函数中,我声明了像这样的用户MyList
MyList<User> object4;
我对push_back的调用如下
User newuser(int id, string name, int age, int zip);
object4.push_back(newuser);
User类中的所有数据都有效,
目前我得到一个错误“没有匹配函数来调用'MyList :: push_back(User)(&amp;)(int,std:string,int,int)”
“注意候选人是:void MyList :: push_back(type)[with type = User]”
答案 0 :(得分:1)
您声明了一个函数
User newuser(int id, string name, int age, int zip);
并尝试将push_back
此函数添加到object4
。但是object4
被声明为
MyList<User> object4;
不是返回MyList<User (&) (int, std:string, int, int)>
的{{1}}个函数。这就是错误消息的原因
没有匹配函数来调用“MyList :: push_back(User(&amp;)(int,std:string,int,int))”
如果你想创建一个User
并将它附加到object4,你可以这样做
User
如果你有一个带有这些参数的构造函数。