鱼C论坛

 找回密码
 立即注册
查看: 2203|回复: 2

为什么这段c++模版代码跑不起来,问了10几个没一个知道的

[复制链接]
发表于 2013-12-4 19:41:18 | 显示全部楼层 |阅读模式
20鱼币
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
using namespace std;
template<class T1,class T2>
class people
{
public:
        people();
        people(const T1&x,const T2&y);
        ~people();
        friend ostream&operator<<(ostream&x,const people&y);
private:
        T1 name;
        T2 age;
};
template<class T1,class T2>
people<T1,T2>::people():name("默认构造函数创建一个新对象"),age(1){}

template<class T1,class T2>
people<T1,T2>::~people(){cout << "析构people.\n";}

template<class T1,class T2>
ostream&operator<<(ostream&x,const people<T1,T2>&y)
{
        x<<y.name << "的年龄:" << y.age << endl;
        return(x);
}
template<class T1,class T2>
people<T1,T2>::people(const T1&x,const T2&y):name(x),age(y){}
template<class T1>
void show(const vector<T1>&x)
{
        for(int i=0;i<x.size();i++)
        {
                cout << x[i] << endl;
        }
        cout << endl;
}
int main()
{
        vector<people<string,int>>one(1);
        show(one);
        system("pause");
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-4 20:55:37 | 显示全部楼层
QQ截图20131204205616.jpg
我只能说你问的人很水
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-5 15:48:05 | 显示全部楼层
1、你定义的类成员变量Name和Age是私有的,但是重载<<符号却用了y.Name和y.Age. 这是编译不过的吧。。。
2、vector< people<string,int> >one(1);    尖括号之间加个空格吧。否则编译不过。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 21:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表