注册 登录
编程论坛 C++教室

默认参数的类模板问题

zhuzhidu784 发布于 2011-05-07 13:05, 1363 次点击
程序代码:
#include<iostream>
using namespace std;
template<typename AType=int,int size = 10>
class atype
{
    public:
        atype()
        {
            int i;
            for(i=0;i<size;i++) array[i]=i;
        }
        AType& operator[](int n);
    private:
        AType array[size];
};
template<typename AType,int size>AType& atype<AType,size>::operator [](int n)
{
    if(n<0||n>=size)
    {cout<<"下标"<<n<<"超出范围!!!"<<endl;
    exit(1);
    }
    return array[n]=n;
}
int main()
{
    atype<int,12>intob;
    atype<double>doubleob;
    atype<>defaultob;
    int i;
    cout<<"int数组:";
    for(i=0;i<12;i++) intob[i]=i;
    for(i=0;i<12;i++)
        cout<<intob[i]<<"  ";
    cout<<endl;
    cout<<"double数组:";
    for(i=0;i<10;i++) doubleob[i]=(double)i/2;
    for(i=0;i<10;i++)
        cout<<doubleob[i]<<"  ";
    cout<<endl;
    cout<<"默认数组:";
    for(i=0;i<10;i++)
    for(i=0;i<10;i++)
        cout<<defaultob[i]<<"  ";
    cout<<endl;
    return 0;
}
我明明设置了doubleob[i]=(double)i/2;
可是为什么输出却是0 1 2 3 4 5 6 7 8 9啊
4 回复
#2
玩出来的代码2011-05-07 14:09
你在下表操作符中将下标赋值给array[n]了,值已经变了
#3
zhuzhidu7842011-05-07 18:48
回复 2楼 玩出来的代码
那怎么改啊
#4
zhuzhidu7842011-05-07 18:49
知道怎么改了 谢谢哈  呵呵
#5
lintaoyn2011-05-08 08:20
return array[n]=n;改成return array[n];
1