1

プログラムに問題があります。2次元のコンテナーを作成したいのですが、演算子のオーバーロードを実装する方法がわかりません。これが私のコードです:

    template<class T, int N, int M>//az osztály sablonjai
    class my_matrix:public matrix_base<T,N,M>{
    public:
    my_matrix();

    ~my_matrix();

    T& operator=(my_matrix &rhs);

    T& operator()(int rhs,int lhs);

    T& operator+(my_matrix<T,N,M> &rhs);

    T& operator-(my_matrix<T,N,M> rhs);

    T& operator*(my_matrix<T,N,M> rhs);

    T& operator/(my_matrix<T,N,M> rhs);

    private:
    T arr[N][M];//alap kétdimenziós tömb
    };

    my_matrix<T,N,M>::my_matrix<T,N,M>(){
    T arr[N][M];
    };

    my_matrix<T,N,M>::~my_matrix<T,N,M>(){
    delete[] arr;
    };

    T& operator=(my_matrix rhs){
    return this;
    };

    T& operator()(int rhs,int lhs){
    return arr[rhs][lhs];
    };

    T& my_matrix::operator+(my_matrix<T,N,M> rhs){
    return this+lhs;
    };

    T& my_matrix::operator-(my_matrix<T,N,M> rhs){
    return this-lhs;
    };

    T& my_matrix::operator*(my_matrix<T,N,M> rhs){
    return this*lhs;
    };

    T& my_matrix::operator/(my_matrix<T,N,M> &rhs){
    return this/lhs;
    };

これを取得したい:my_matrix m; my_matrix m2; ... m = m + m2;

matrix_baseは不明な抽象クラスです(これはタスクです)。誰か助けてもらえますか?ありがとう!

4

1 に答える 1

0

投稿する前に、C++ FAQ と StackOverflow を検索することを強くお勧めします。

たとえば、C++ の FAQ には、Matrix クラスと演算子のオーバーロードに関する大きなセクションがあります。このリンクをチェックしてください: C++ FAQ - 行列のオーバーロードされた演算子

編集 1: 効果的な C++ を追加

もう 1 つの推奨事項は、Scott Meyer の効果的な C++
の本
を入手すること です

Scott Meyer の本には、演算子のオーバーロードに関するセクションがあり、特に+, -, +=and -=.

于 2012-11-24T19:20:50.573 に答える