|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 硫酸亚铜 于 2014-10-22 17:41 编辑
代码如下:
- #include <iostream>
- using namespace std;
- template <class T>
- class Chain;
- template <class T>
- class ChainNode
- {
- friend class Chain<T>;
- private:
- T data;
- ChainNode<T>* link = 0 ;
- };
- template <class T>
- class Chain
- {
- friend ostream& operator<< <T>(ostream& out, const Chain<T>& x);
- public:
- Chain(){ first = 0; }
- Chain<T>& InsertChange(int k);
- private:
- ChainNode<T>* first;//指向第一个节点的指针
- };
- int main()
- {
- Chain<int> test;
- for (int i = 0; i < 10; i++)
- {
- test.InsertChange(i);
- }
- cout << test; //此处报错!!!
- return 0;
- }
- //重载<<
- template<class T>
- ostream& operator<< (ostream& out, const Chain<T>& x)
- {
- ChainNode<T>* p;
- for (p = x.first; p; p = p->link)
- {
- out << p->date << endl;
- }
- return out;
- }
- template <class T>
- Chain<T>& Chain<T>::InsertChange(int k)
- {
- ChainNode<T>* p = new ChainNode<T>;
- ChainNode<T>* q;
- p->data = k;
- if (!first)
- {
- first = p;
- }
- else
- {
- q = first;
- while (q->link)
- {
- q = q->link;
- }
- q->link = p;
- }
- return *this;
- }
复制代码
为什么我重载了<<运算符之后,在main函数中写入
这条语句之后就会提示我
- “error LNK2019: 无法解析的外部符号 "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Chain<int> const &)" (?<<@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@ABV?$Chain@H@@@Z),该符号在函数 _main 中被引用
- 1>E:\project\chain\Debug\chain.exe : fatal error LNK1120: 1 个无法解析的外部命令”
复制代码
想不明白,还请各位大虾不吝赐教!
|
|