C++ 对构造函数没有匹配的函数调用 #包括 使用名称空间std; 模板 阶级人士{ 公众: 虚空插入(T项)=0; 虚拟T show()=0; }; 类名 { 私人: 字符串fname; 字符串名称; 公众: 名称(第一个字符串,最后一个字符串); //布尔运算符==(名称和p1,名称和p2) }; 名称::名称(先字符串,后字符串){ fname=第一; lname=最后一个; } 模板 类别人士:公众人士 { 私人: Tα[1]; 整数大小; 公众: 人(); 虚拟空位插入(T信息); 虚拟T-show(); }; 模板 person::person(){ 尺寸=0; } 模板 作废人员::插入(T信息){ a[0]=信息; } 模板 T person::show(){ 返回[0]; } int main(){ 先串(“朱莉娅”),后串(“罗伯特”); 姓名(第一名,最后一名); 人*aPerson=新人(); aPerson->插入(温度); cout show()

C++ 对构造函数没有匹配的函数调用 #包括 使用名称空间std; 模板 阶级人士{ 公众: 虚空插入(T项)=0; 虚拟T show()=0; }; 类名 { 私人: 字符串fname; 字符串名称; 公众: 名称(第一个字符串,最后一个字符串); //布尔运算符==(名称和p1,名称和p2) }; 名称::名称(先字符串,后字符串){ fname=第一; lname=最后一个; } 模板 类别人士:公众人士 { 私人: Tα[1]; 整数大小; 公众: 人(); 虚拟空位插入(T信息); 虚拟T-show(); }; 模板 person::person(){ 尺寸=0; } 模板 作废人员::插入(T信息){ a[0]=信息; } 模板 T person::show(){ 返回[0]; } int main(){ 先串(“朱莉娅”),后串(“罗伯特”); 姓名(第一名,最后一名); 人*aPerson=新人(); aPerson->插入(温度); cout show(),c++,c++11,constructor,C++,C++11,Constructor,name没有默认构造函数,因此无法使用新人对其进行初始化。解决此问题的最简单方法是为name添加默认构造函数: #include <iostream> using namespace std; template<class T> class people{ public: virtual void insert(T item)=0; virtual T show()=0; }; class name { private: st

name
没有默认构造函数,因此无法使用
新人对其进行初始化。解决此问题的最简单方法是为
name
添加默认构造函数:

#include <iostream>
using namespace std;

template<class T>
class people{
    public:
    virtual void insert(T item)=0;
    virtual T show()=0;
};

class name
{
    private:
     string fname;
     string lname;
     public:
      name(string first, string last);
    //  bool operator== (name & p1, name &p2)
};

name::name(string first, string last){
    fname = first;
    lname = last;
}
template <class T>
class person : public people<T>
{
    private:
    T a[1];
    int size;
    public:
    person();
    virtual void insert(T info);
    virtual T show();
};
template<class T>
person<T>::person(){
    size = 0;
}
template<class T>
void person<T>::insert(T info){
    a[0] =info;
}
template <class T>
T person<T>::show(){
      return a[0];
}
int main(){
    string first("Julia"), last("Robert");
    name temp(first,last);
    people<name>* aPerson = new person<name>();
    aPerson-> insert(temp);
    cout << aPerson->show() << endl;
    return 0;
}

问题2:你没有重载
你显然没有合适的类
名称的默认构造函数!只要阅读编译器告诉你的内容…你应该得到一个很好的教程,而不是通过这里…顺便说一句,你应该显式地包含
头。不能保证包含.下一个问题是,没有合适的
operator@user2972206问题是:您的名称类没有名称。新错误:“std::ostream&name::operator”
name() { }; //add this to name under public: of course
friend std::ostream& operator<<(std::ostream& stream, const name &nm); //Inside name class
std::ostream& operator<<(std::ostream& stream, const name &nm){ //OUTSIDE of name
    stream << nm.fname << " " << nm.lname << std::endl;
    return stream;
}