我无法理解为什么此代码会出现未解析的外部错误。
stack.cpp
#include "stack.h"
#include<iostream>
using namespace std;
template<int i>
st<i>& st<i>::operator=(const st<i> &other){
if(this!=&other){
delete[]anarray;
anarray=new int[i];
for(int i=0;i<10;i++)
anarray[i]=other.anarray[i];}
return *this;
}
template<int i>
void st<i>::push(int i2, int val){anarray[i2]=val;}
stack.h
#pragma once
template<int i>
class st{
public: int *anarray;
st(){anarray=new int[i];}
~st(){delete[]anarray;};
st<i>& operator=(const st<i> &other);
//int& operator[](int i);
void push(int i, int val);
};
的main.cpp
#include<iostream>
#include"stek.h"
using namespace std;
void main(){
cout<<"----"<<endl;
st <10> z1; st<10> z2;
for(int i=0;i<6;i++)
z1.anarray[i]=2*i;
z2=z1; for(int i=0;i<6;i++) cout<<z2.anarray[i]<<endl;
cout<<"----"<<endl;
system("pause");
}
我知道如何实现这一点,所以它有效,但我的问题是为什么这个特定的例子不起作用。