C++函数里创建动态数组

头文件:#pragmaonceclassCArry{public:CArry(unsignedintlength=0);private:int*m_Data;unsign... 头文件:
#pragma once

class CArry{

public:CArry(unsigned int length=0);

private: int*m_Data;
unsigned int m_nLength;

public:
void loading(int*m_Data,unsigned int m_nLength);
double get(unsigned int index);
bool set(unsigned int index,double value);
void print();
int null(int x);
};

函数:
目的:希望在函数中构建一个动态数组。若用户输入的数组长度<=0,
则把数组初始为NULL。
void CArry::CArry(unsigned int length)
{
if (length>0)
int*m_Data=new int[m_nLength];
else
*m_Data=NULL;

}

报错:
error C2533: 'CArry::CArry' : constructors not allowed a return type
展开
 我来答
White_MouseYBZ
2015-05-19 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6328万
展开全部
你为什么要在CArry::CArry(unsigned int length)前写个void?那是非法的,删掉它便可!
另:函数中的逻辑似乎不对,据题意应该是:
if (length>0)
int *m_Data=new int[m_nLength];
或者
int *m_Data;
if (length>0)
m_Data=new int[m_nLength];
else
m_Data=NULL;
才对。不然,将会产生给未定义指针赋值的运行时错误!
追问
我以为函数实现一定要有VOID或者返回类型==
现在编译通过了,但是运行就崩溃,弹出程序已停止工作是为什么T T
追答
构造函数和析构函数是禁止使用返回类型的,你不知道?
崩溃问题我不已经给你改过了吗?你把构造函数体改成
int *m_Data;
if(length>0)
m_Data=new int[m_nLength];
else
m_Data=NULL;
在主函数中CArry s(0);这样创建对象,无论()写0还是其他长度,都不会崩溃!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式