没有无参数默认构造函数的类 如何动态申请数组?

thecorr 2007-12-01 10:08:31
对于没有无参数默认构造函数的类例如
class MyClass
{
public:
MyClass( int i ) { m_data = i; }
private:
int m_data;
};

int _tmain(int argc, _TCHAR* argv[])
{
//MyClass a,b;
MyClass* p = new MyClass[6];

return 0;
}

这样会提示错误, 请问在不声明无参构造函数的前提下,如何象MyClass* p = new MyClass(5)初始化单个类对象 这样 初始化数组?
...全文
175 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
AlwaysSLH 2007-12-01
  • 打赏
  • 举报
回复
《C++ Primer》上的方法
AlwaysSLH 2007-12-01
  • 打赏
  • 举报
回复
用定位new操作符,如:
char *p = new char[sizeof(MyClass)*6];
int offset = sizeof(MyClass);
for( int i = 0 ; i < 6 ; ++i )
{
new( p + offset*i ) MyClass( 0 );
}
xuhui_7810 2007-12-01
  • 打赏
  • 举报
回复
如果没有提供默认构造函数,那就不能动态分配一组对象
ckt 2007-12-01
  • 打赏
  • 举报
回复
先申请指针数组,在循环去new

class MyClass
{
public:
MyClass( int i ) { m_data = i; }
private:
int m_data;
};

int main()
{
MyClass* pArr[6] = {0};
for (int i = 0; i < 6; i++)
{
pArr[i] = new MyClass(i);
}
return 0;
}

霁云 2007-12-01
  • 打赏
  • 举报
回复
类做数组的动态创建的时候,必须存在无参数的缺省构造函数(default constructor)
霁云 2007-12-01
  • 打赏
  • 举报
回复
C++语法貌似不支持lz
xugang_2001 2007-12-01
  • 打赏
  • 举报
回复
这样做好像不可以吧
believefym 2007-12-01
  • 打赏
  • 举报
回复
c99支持变长数组
believefym 2007-12-01
  • 打赏
  • 举报
回复

int len = 6;
MyClass *pm[len];
char *p = new char[sizeof(MyClass)*len];
int offset = sizeof(MyClass);
for(int i=0; i<6; ++i )
{
pm[i]=new(p+offset*i) MyClass(i);
}
ryfdizuo 2007-12-01
  • 打赏
  • 举报
回复
MyClass( int i=0 ) { m_data = i; }
该成这个试一下,

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧