zhzbd
zhzbd
采纳率39.1%
2021-03-04 13:00

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

10
已结题
//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;
}
  • 点赞
  • 收藏
  • 复制链接分享

2条回答

  • weixin_42910064 泡视界 1月前

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

    void reset()  

    此句改为

    void Array<T>::reset()

    点赞 2 评论 复制链接分享
  • qq_40344524 书山客 1月前
    //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;
    }
    点赞 评论 复制链接分享