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 展开
#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 展开
1个回答
展开全部
你为什么要在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;
才对。不然,将会产生给未定义指针赋值的运行时错误!
另:函数中的逻辑似乎不对,据题意应该是:
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还是其他长度,都不会崩溃!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询