标题:【求助】关于自编头文件出现无法解析的外部符号问题
只看楼主
逐鹿
Rank: 2
等 级:论坛游民
帖 子:8
专家分:12
注 册:2014-9-19
结帖率:0
 问题点数:0 回复次数:1 
【求助】关于自编头文件出现无法解析的外部符号问题

自己编了一个类头文件,在外部定义时引用出现了错误
总共三个文件:
Stack.h
程序代码:
#ifndef STACK_H
#define STACK_H
template<typename DataType> class Stack
{
public:
    Stack(int size)
    {
        maxSize=size;
        top=-1;
        elements=new DataType[size];
    }
    ~Stack()
    {
        delete[] elements;
    }
    bool push(DataType data);
    DataType pop();
    void pr(DataType data);        //输出
private:
    DataType *elements;
    int top,maxSize;
};
#endif

Stack.cpp
程序代码:
#include <iostream>
#include "Stack.h"
/*******************入栈操作********************/
template<typename DataType > bool Stack<DataType>::push(DataType data)
{
    if(top>=maxSize)
        return false;
    elements[++top]=data;
    return true;
}

/*******************出栈操作******************/

template<typename DataType> DataType Stack<DataType>::pop()
{
    if(top==-1)
    {
        exit(1);
    }
    return elements[top--];
}

/*********************输出*****************/

    template<typename DataType> void Stack<DataType>::pr(DataType data)  //输出
    {
        std::cout<<data<<ends;
    }
    

main.cpp
程序代码:
/*************************************
一整数集合{23,56,11,4,87,98},
将他们依次存入某数据结构,
然后输出要求输出顺序为: 11,4,56,98,87,23.
*************************************/
#include <iostream>
#include "Stack.h"
using namespace std;
void main()
{

    Stack<int> s=Stack<int>(6);                            //创建栈结构
    int temp=0;
    s.push(23);
    s.push(56);
    s.push(11);
    s.pr(s.pop());
    s.push(4);
    s.pr(s.pop());
    s.pr(s.pop());
    s.push(87);
    s.push(98);
    s.pr(s.pop());
    s.pr(s.pop());
    s.pr(s.pop());
    cout<<endl;
}


错误类型:
1>main.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall Stack<int>::pr(int)" (?pr@?$Stack@H@@QAEXH@Z),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "public: int __thiscall Stack<int>::pop(void)" (?pop@?$Stack@H@@QAEHXZ),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "public: bool __thiscall Stack<int>::push(int)" (?push@?$Stack@H@@QAE_NH@Z),该符号在函数 _main 中被引用
1>E:\vs-program\VSproject\顺序表模板\Debug\栈模板.exe : fatal error LNK1120: 3 个无法解析的外部命令


如果将Stack.cpp中的代码直接复制到Stack.h中能正确运行。。
百度了很久也不知道怎么改,求指正,谢谢
搜索更多相关主题的帖子: elements 
2015-12-23 16:08
逐鹿
Rank: 2
等 级:论坛游民
帖 子:8
专家分:12
注 册:2014-9-19
得分:0 
模板函数的声明和定义都放在一个文件中

win8.1+vs2010。。。

灵感源于专注。。。
2015-12-23 21:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-460496-1-1.html




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

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