| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4413 人关注过本帖, 1 人收藏
标题:求助类中构造函数给二维数组赋值问题
只看楼主 加入收藏
ID不见了
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2016-5-10
结帖率:83.33%
收藏(1)
已结贴  问题点数:20 回复次数:6 
求助类中构造函数给二维数组赋值问题
程序代码:
class array
{
private:
    int arr[2][3];
public:
    array(int **a)
    {
        arr=a;
    }
};
我想把用户输入的二维数组初始化给类中的二维数组,为什么显示这里出错了?把地址赋给地址能达到数组的值相等吗?
搜索更多相关主题的帖子: 用户 
2016-06-23 09:49
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:20 
你先将代码贴全,也就是怎么使用这个array类的代码贴出来。

“把地址赋给地址能达到数组的值相等吗?” --- 当然不能
2016-06-23 10:00
ID不见了
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2016-5-10
收藏
得分:0 
回复 2楼 rjsp
全部代码是这样的
程序代码:
#include<iostream>
using namespace std;

class array
{
private:
    int arr[2][3];
public:
    array()      //初始化为0
    {
        int i,j;
        for(i=0;i<2;i++)
        {
            for(j=0;j<3;j++)
            {
                arr[i][j]=0;
            }
        }
    }
    array(int **a)
    {
        arr=a;
    }
    array operator + (const array &a);
};

array array::operator + (const array &a)
{
    int i,j;
    array c;
    for(j=0;j<2;j++)
    {
        for(i=0;i<3;i++)
        {
            c.arr[j][i]=arr[j][i]+a.arr[j][i];
        }
    }
    return c;
}

int main()
{
    int i,j;
    int a[2][3]={{2,5,10},{4,1,9}};
    int b[2][3]={{3,7,9},{2,9,12}};
    int c[2][3]={0};
    array ay(a);
    c=a+b;
    for(i=0;i<2;i++)
    {
        for(j=0;j<3;j++)
        {
            cout<<c[i][j]<<" "<<endl;;
        }
    }
    return 0;
}

我就是想实现两个矩阵相加,可是初始化的时候卡住了。。。
错误信息:
error C2440: '=' : cannot convert from 'int ** ' to 'int [2][3]'
error C2664: '__thiscall array::array(int ** )' : cannot convert parameter 1 from 'int [2][3]' to 'int ** '
error C2110: cannot add two pointers
2016-06-23 10:41
ID不见了
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2016-5-10
收藏
得分:0 
回复 3楼 ID不见了
重载+号进行矩阵加法运算
2016-06-23 10:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:0 
回复 3楼 ID不见了
这玩意儿要想写得好(并且完善)很难,是个细心活儿,我没那个耐心,随便写个骨架给你

程序代码:
#include <initializer_list>
#include <algorithm>
#include <functional>

template<typename T, size_t D0, size_t... DN>
struct matrix
{
    typedef matrix<T,DN...> elem_type;
    matrix() = default;
    matrix( std::initializer_list<elem_type> l )
    {
        std::copy( std::begin(l), std::end(l), data_ );
    }
    matrix operator+( const matrix& m ) const
    {
        matrix result;
        std::transform( data_, data_+D0, m.data_, result.data_, std::plus<elem_type>() );
        return result;
    }
    const elem_type& operator[]( size_t index ) const
    {
        return data_[index];
    }
    elem_type& operator[]( size_t index )
    {
        return data_[index];
    }
private:
    elem_type data_[D0];
};

template<typename T, size_t D0>
struct matrix<T,D0>
{
    typedef T elem_type;
    matrix() = default;
    matrix( std::initializer_list<elem_type> l )
    {
        std::copy( std::begin(l), std::end(l), data_ );
    }
    matrix operator+( const matrix& m ) const
    {
        matrix result;
        std::transform( data_, data_+D0, m.data_, result.data_, std::plus<elem_type>() );
        return result;
    }
    const elem_type& operator[]( size_t index ) const
    {
        return data_[index];
    }
    elem_type& operator[]( size_t index )
    {
        return data_[index];
    }
private:
    elem_type data_[D0] = {};
};

#include <iostream>
using namespace std;

template<typename T, size_t R, size_t C>
void Print2D( const matrix<T,R,C>& m )
{
    for( size_t r=0; r!=R; ++r )
    {
        for( size_t c=0; c!=C; ++c )
            cout << m[r][c] << ", ";
        cout << '\n';
    }
}

int main( void )
{
    using mtx_int_2_3 = matrix<int,2,3>;

    mtx_int_2_3 a = { {2,5,10}, {4,1,9} };
    mtx_int_2_3 b = { {3,7,9}, {2,9,12} };
    mtx_int_2_3 c = a + b;

    Print2D( a );
    cout << "------------------\n";
    Print2D( b );
    cout << "------------------\n";
    Print2D( c );

    return 0;
}

2016-06-23 13:34
ID不见了
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2016-5-10
收藏
得分:0 
回复 5楼 rjsp
可我只是想问应该怎么调用构造函数初始化而已。。。
2016-06-23 14:29
ID不见了
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2016-5-10
收藏
得分:0 
搞定了,结贴。
2016-06-23 15:34
快速回复:求助类中构造函数给二维数组赋值问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026079 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved