显示无法解析的外部问题,应该怎么修改代码?

//template1.h
#include"stdafx.h"
#include<iostream>
#include<string>
using namespace std;
#ifndef ARRAY
#define ARRAY
const int len=10;
template<class T>
class Array
{
public:
	Array()
		{
	m_len=0;
	m_a=new T[len];

          }
	Array(int len)
		{
	m_len=len;
	m_a=new T[len];
}
	void reset();
friend	ostream& operator<<(ostream& out, const Array<T>&value)
	{
    for (int i = 0; i < value.m_len; i++)
        out << value.m_a[i] ;
    return out;
}

private:
	int m_len;
	int *m_a;
};




template<class T>
void reset()
{
	cout<<"请输入数组里的元素:"<<endl;
	for(int i=0;i<len;i++)
		cin>>m_a[i];
}

#endif

//11.5.1.cpp
#include"stdafx.h"
#include"template1.h"
#include<iostream>
using namespace std;


int main()
{   Array<int>A(10);

A.reset();
cout<<"输出数组中的元素"<<endl;
cout<<A;

return 0;
}

 

你的reset的在类中的声明没错,但是在类外的定义不对,修改定义的地方。

void reset()  

此句改为

void Array<T>::reset()

//template1.h
#include"stdafx.h"
#include<iostream>
#include<string>
using namespace std;

#ifndef ARRAY
#define ARRAY
const int len = 10;
template<class T>
class Array
{
public:
	Array()
	{
		m_len = 0;
		m_a = new T[len];
	}
	Array(int len)
	{
		m_len = len;
		m_a = new T[len];
	}
	void resets();
	friend	ostream& operator<<(ostream& out, const Array<T>& value)
	{
		for (int i = 0; i < value.m_len; i++)
			out << value.m_a[i];
		return out;
	}
private:
	int m_len;
	int* m_a;
};

template<class T>

void Array<T>::resets()  //需要修改的地方
{
	cout << "请输入数组里的元素:" << endl;
	for (int i = 0; i < len; i++)
		cin >> m_a[i];
}
#endif


//11.5.1.cpp
#include"stdafx.h"

#include"template1.h"

#include<iostream>


int main()
{
	Array<int>A(10);
	A.resets();
	std::cout << "输出数组中的元素" << std::endl;
	std::cout << A;
	return 0;
}