当前位置:  开发笔记 > 编程语言 > 正文

创建一个类objs数组

如何解决《创建一个类objs数组》经验,为你挑选了1个好方法。

考虑下课

class test
{
public:
test(int x){ cout<< "test \n"; }

};

现在我想创建50个类测试对象的数组.我不能改变班级考试.

可以在堆或堆栈上创建对象.

在这种情况下,在堆栈上创建obj是不可能的,因为我们在类中没有默认构造函数

test objs(1)[50]; /// Error...

现在我们可以考虑在这样的堆上创建objs ..

test ** objs = NULL;
objs = (test **) malloc( 50 * sizeof (test *));
for (int i =0; i<50 ; ++ i)
{
   objs[i] = new test(1);
}

我不想使用malloc.还有其他方法吗?

如果你们想到更多的解决方案,请发布它们......



1> Mr.Ree..:

您无法创建对象数组,如Foo foo [N],没有默认构造函数.这是语言规范的一部分.

要么:

test * objs [50];
for() objs[i] = new test(1).

你不需要malloc().你可以声明一个指针数组.

c++decl> explain int * objs [50]
declare objs as array 50 of pointer to int

但是你可能应该附加某种自动RAII类型的破坏.


OR子类测试公开:

class TempTest : public test
{
public:
  TempTest() : test(1) {}
  TempTest(int x) : test(x) {}
  TempTest(const     test & theTest ) : test(theTest) {}
  TempTest(const TempTest & theTest ) : test(theTest) {}
  test & operator=( const     test & theTest ) { return test::operator=(theTest); }
  test & operator=( const TempTest & theTest ) { return test::operator=(theTest); }
  virtual ~TempTest() {}
};

然后:

TempTest  array[50];

您可以将每个TempTest对象视为测试对象.

注意:operator =()©构造函数不是继承的,因此必要时重新指定.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有