这是我目前正在获取的编译器错误
错误C2679:二进制'=':找不到哪个运算符采用了'Pair'类型的右手操作数(或者没有可接受的转换)
using namespace std;
template<typename T, typename U>
Array< Pair<T, U>>* zip(Array<T> & lhs,Array<U> & rhs)
{
int zipLen = (lhs.getLength() < rhs.getLength() ? lhs.getLength() : rhs.getLength());
Array<Pair<T, U>>* zipped= new Array<Pair<T,U>>(zipLen);
for (int i=0; i<zipLen; i++)
zipped[i] = Pair<T, U>(lhs[i], rhs[i]);//and this is the line giving me problems
return zipped;
}
int main()
{
Array<int> a1(5);
Array<char>a2(3);
Array<Pair<int,char>>*a3;
for(int i =1;i<5;i++)
a1[i-1]=i;
for(char ch='a';ch<='c';ch++)
a2[ch-'a']=ch;
a3=zip(a1,a2);
cout<<a3;
system("pause");
return 0;
}
答案 0 :(得分:2)
我相信您已声明“压缩”为指向数组对的指针。因此,要访问数组的元素,必须首先取消引用指针:
(*zipped)[i] = Pair<T, U>(lhs[i], rhs[i]);