| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 657 人关注过本帖
标题:VC6 的程序 为什么在VC10 上不行啊
只看楼主 加入收藏
goozilla008
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-12-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
VC6 的程序 为什么在VC10 上不行啊
#include<iostream>
using namespace std;
template<class T>
class AbstractList
{
public:
    virtual bool isEmpty() const=0;
    virtual int length() const=0;
    virtual bool find(int k,T&x)const=0;
    virtual int search(const T&x)const=0;
    virtual AbstractList<T>& Delete(int k,T&x)=0;
    virtual AbstractList<T>&insert(int k, const T&x)=0;
    virtual void output(ostream &out)const=0;
};//是下面LinearList:public AbstractList<T>作为基类的

class OutOfBounds {
public:
    OutOfBounds(){}
    ~OutOfBounds(){}
    const char *ShowReason() const {
        return "下标越界";
    }
};

class NoMen{
public:
    NoMen(){}
    ~NoMen(){}
    const char *ShowReason() const {
        return "存储溢出";
    }
};//老师添得作为程序的完整



template<class T>
class LinearList:public AbstractList<T>
{
public:
    LinearList(int maxListSize=10);
    ~LinearList(){delete[]element;}
    bool isEmpty()const{return len==0;}
    int length()const{return len;}
    bool find(int k,T&x)const;
    int search(const T&x)const;
    AbstractList<T>&Delete(int k,T&x);
    AbstractList<T>&insert(int k, const T&x);
    void output(ostream &out)const;//把线性表放入输出流out中
    friend ostream &operator<<(ostream& out, LinearList &L);//重载运算符<<
private:
    int len;
    int maxSize;
    T *element;

};//LinearList类的定义,里面的成员函数均是申明其具体定义在下面


template<class T>//作为模板都要写的,且一句只作用一个函数
LinearList<T>::LinearList(int maxListSize)
{
    maxSize=maxListSize;
    element=new T[maxSize];
    len=0;
}//LinearList 构造函数的定义


template<class T>
bool LinearList<T>::find(int k,T&x)const//find(int k,T&x)寻找表中第K个元素,并把它保存到x中;如果不存在则返回false







调试的结果为
1>------ 已启动生成: 项目: 0123, 配置: Debug Win32 ------
1>生成启动时间为 2010/12/4 21:48:54。
1>InitializeBuildStatus:
1>  正在对“Debug\0123.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1>  所有输出均为最新。
1>ManifestResourceCompile:
1>  所有输出均为最新。
1>main.obj : error LNK2019: 无法解析的外部符号 "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class LinearList<int> &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@AAV?$LinearList@H@@@Z),该符号在函数 _main 中被引用
1>c:\users\徐施展\0123\Debug\0123.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>
1>生成失败。
1>
1>已用时间 00:00:00.73
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

{

    if (k<1||k>len)return false;
    x=element[k-1];
    return true;}
template<class T>
int LinearList<T>::search(const T&x)const{
    for(int i=0;i<len;i++)
        if (element[i]==x)return 1;
    return 0;
}

template<class T>
AbstractList<T>&LinearList<T>::Delete(int k,T&x)//删除表中第k个元素,保存到x,返回修改后的线性表
{
    if(find(k,x))
    {for(int i=k;i<len;i++)
    element[i-1]=element[i];
    len--;
    return *this;}
    else throw OutOfBounds();
}


template<class T>
AbstractList<T>&LinearList<T>::insert(int k,const T&x)//在第k个元素之后插入X,返回修改后的线性表
{
    if(k<0||k>len)throw OutOfBounds();
    if(len==maxSize)throw NoMen();
    for(int i=len-1;i>k;i--)
        element[i+1]=element[i];
    element[k]=x;
    len++;
    return *this;
}

template<class T>
void LinearList<T>::output(ostream &out)const//把线性表放入输出流out中
{
    for (int i=0; i<length() ; i++)
        out<<element[i]<<' ';
    out<<endl;
}


template<class T>
ostream &operator<<(ostream& out, LinearList<T> &L)//重载运算符<<
{
    for (int i=0; i<L.length() ; i++)
        out<<L.element[i]<<' ';
    out<<endl;
    return out;
}


void main()//主函数
{
    LinearList<int> L(5); //建立空的顺序表
    cout<<"Length="<<L.length()<<endl;
    cout<<"isEmpty="<<L.isEmpty()<<endl;
    L.insert(0,2).insert(1,6);
    cout<<"List is "<<L<<endl;
    cout<<"isEmpty="<<L.isEmpty()<<endl;
    L.insert(0,22).insert(3,666);
    cout<<"List is "<<L<<endl; //用cout输出
    int z;
    L.find(1,z);
    cout<<"first element is "<<z<<endl;
    L.Delete(1,z);
    cout<<"Deleted element is "<<z<<endl;
    cout<<"List is "<<L<<endl;
    if ((z=L.search(6))>0)
        cout<<"Search in location "<<z<<endl;
    else
        cout<<"No such data."<<endl;
    L.output(cout); //用Output输出
}
搜索更多相关主题的帖子: search 
2010-12-04 21:54
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:20 
上面的vC6中也不行   与标准有冲突
#include<iostream.h>
//using namespace std;

template<class T>
class AbstractList
{
public:
    virtual bool isEmpty() const=0;
    virtual int length() const=0;
    virtual bool find(int k,T&x)const=0;
    virtual int search(const T&x)const=0;
    virtual AbstractList<T>& Delete(int k,T&x)=0;
    virtual AbstractList<T>& insert(int k, const T&x)=0;
    virtual void output(ostream &out)const=0;
};//是下面LinearList:public AbstractList<T>作为基类的

class OutOfBounds
{
public:
    OutOfBounds(){}
    ~OutOfBounds(){}
    const char *ShowReason() const
    {
        return "下标越界";
    }
};

class NoMen
{
public:
    NoMen(){}
    ~NoMen(){}
    const char *ShowReason() const
    {
        return "存储溢出";
    }
};//老师添得作为程序的完整



template<class T>
class LinearList:public AbstractList<T>
{
public:
    LinearList(int maxListSize=10);
    ~LinearList(){delete[]element;}
    bool isEmpty()const{return len==0;}
    int length()const{return len;}
    bool find(int k,T&x)const;
    int search(const T&x)const;
    AbstractList<T>&Delete(int k,T&x);
    AbstractList<T>&insert(int k, const T&x);
    void output(ostream &out)const;//把线性表放入输出流out中
    friend ostream &operator<<(ostream& out, LinearList<T> &L);//重载运算符<<
private:
    int len;
    int maxSize;
    T *element;

};//LinearList类的定义,里面的成员函数均是申明其具体定义在下面


template<class T>//作为模板都要写的,且一句只作用一个函数
LinearList<T>::LinearList(int maxListSize)
{
    maxSize=maxListSize;
    element=new T[maxSize];
    len=0;
}//LinearList 构造函数的定义


template<class T>
bool LinearList<T>::find(int k,T&x)const//find(int k,T&x)寻找表中第K个元素,并把它保存到x中;如果不存在则返回false
{

    if (k<1||k>len)
        return false;
    x=element[k-1];
    return true;
}
template<class T>
int LinearList<T>::search(const T&x)const
{
    for(int i=0;i<len;i++)
        if (element[i]==x)
            return 1;
    return 0;
}

template<class T>
AbstractList<T>&LinearList<T>::Delete(int k,T&x)//删除表中第k个元素,保存到x,返回修改后的线性表
{
    if(find(k,x))
    {
        for(int i=k;i<len;i++)
            element[i-1]=element[i];
        len--;
        return *this;
    }
    else
        throw OutOfBounds();
}


template<class T>
AbstractList<T>&LinearList<T>::insert(int k,const T&x)//在第k个元素之后插入X,返回修改后的线性表
{
    if(k<0||k>len)
        throw OutOfBounds();
    if(len==maxSize)
        throw NoMen();
    for(int i=len-1;i>k;i--)
        element[i+1]=element[i];
    element[k]=x;
    len++;
    return *this;
}

template<class T>
void LinearList<T>::output(ostream &out)const//把线性表放入输出流out中
{
    for (int i=0; i<length() ; i++)
        out<<element[i]<<' ';
    out<<endl;
}


template<class T>
ostream &operator<<(ostream& out, LinearList<T> &L)//重载运算符<<
{
    for (int i=0; i<L.length() ; i++)
        out<<L.element[i]<<' ';
    out<<endl;
    return out;
}


void main()//主函数
{
    LinearList<int> L(5); //建立空的顺序表
    cout<<"Length="<<L.length()<<endl;
    cout<<"isEmpty="<<L.isEmpty()<<endl;
    L.insert(0,2).insert(1,6);
    cout<<"List is "<<L<<endl;
    cout<<"isEmpty="<<L.isEmpty()<<endl;
    L.insert(0,22).insert(3,666);
    cout<<"List is "<<L<<endl; //用cout输出
    int z;
    L.find(1,z);
    cout<<"first element is "<<z<<endl;
    L.Delete(1,z);
    cout<<"Deleted element is "<<z<<endl;
    cout<<"List is "<<L<<endl;
    if ((z=L.search(6))>0)
        cout<<"Search in location "<<z<<endl;
    else
        cout<<"No such data."<<endl;
    L.output(cout); //用Output输出
}
2010-12-05 23:01
快速回复:VC6 的程序 为什么在VC10 上不行啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012345 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved