无匹配函数在模板类中调用

时间:2013-02-11 01:43:02

标签: c++

我正在编写一个读取文本文件的程序,并将数据存储到一个名为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]”

1 个答案:

答案 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

如果你有一个带有这些参数的构造函数。