1

これは、現在発生しているコンパイラ エラーです。

エラー 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;
}
4

1 に答える 1

2

ペアの配列へのポインタとして「圧縮」を宣言したと思います。したがって、配列の要素にアクセスするには、まずポインターを逆参照する必要があります。

(*zipped)[i] = Pair<T, U>(lhs[i], rhs[i]);
于 2013-04-02T17:48:46.263 に答える