作者tytnew5168 (AhMo)
看板C_and_CPP
标题[问题] 二维阵列default constructor问题
时间Sat Nov 5 20:18:14 2016
开发平台(Platform): (Ex: Win10, Linux, ...)
Win7
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
Visual studio 2013
问题(Question):
要建一个class matrix
能够透过constructor生成二维阵列
有无参数跟有参数两种constructor
class matrix
{
private:
int** m;
int size;
public:
//parameter constructor
matrix(int s)
{
size = s;
m = new int*[size];
for (int i = 0; i<size; i++)
m[i] = new int[size];
}
//default constructor
matrix()
{
m = new int*[size];
for (int i = 0; i<size; i++)
m[i] = new int[size];
}
}
-----------------------------------------
在主程式里头不晓得要怎麽达到下面这种效果
matrix* mArr1 = new matrix[10]; //calling default constructor
matrix mArr2[5]; //calling default constructor
资料成员虽然有size可是没初值用在default constructor上面无作用
要做像是 matrix mArr2[5]这样事情时就无法
感觉matrix(){}有点像是多打的
想了很久不知道怎麽解决
C++新手请求各位高手帮忙@@
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.241.16.145
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1478348296.A.FCD.html
1F:推 steve1012: 看不太懂你想要干嘛 11/05 21:00
2F:→ steve1012: Marr1 跟marr2有啥关联 11/05 21:01
3F:推 steve1012: 几个看到的问题1.size 用size_t 2. 为何不用vector 3. 11/05 21:04
4F:→ steve1012: 值没有出始化 11/05 21:04
5F:→ steve1012: Matrix 刚开始会是一堆garbage 11/05 21:05
6F:→ nick5130: operator overloading也没办法做到你想要的样子吧? 11/05 21:59
7F:→ nick5130: 而且你希望的matirx[10]应该是一个10x10 matrix? 11/05 21:59
8F:→ nick5130: 如果是的话你直接把你希望的样子改成类似new matrix(10) 11/05 22:00
9F:→ nick5130: 和mArr2(5) 看起来应该就会动了 有错请指正 thx 11/05 22:01
10F:→ nick5130: 我这种写法等於你的default constructor是没有用的 11/05 22:02
11F:→ nick5130: 不过你的default constructor的size也未定义 也是不能用 11/05 22:02