这是我的第一个问题,也是第一个C ++程序。任务是处理十六进制数字。一切都很好,直到我试图实施分裂。我不得不改变整个程序,现在它根本不起作用。
现在的主要问题是在填充数字后立即删除动态数组。
int main()
{
string Liczba1;
string Liczba2;
int swi=0;
cout << "Podaj liczbe 1 :";
cin >> Liczba1;
cout << "Podaj liczbe 2 :";
cin >> Liczba2;
LiczbaHex num1LH(Liczba1);
LiczbaHex num2LH(Liczba2);
LiczbaHex *copy1 = new LiczbaHex(num1LH);
LiczbaHex *copy2 = new LiczbaHex(num2LH);
*copy1 = LiczbaHex::m_stringToArr(copy1); //description below*
*copy2 = LiczbaHex::m_stringToArr(copy2);
...
class LiczbaHex
{
public:
static const int g_PODSTAWA = 10;
LiczbaHex(string _num);
LiczbaHex();
LiczbaHex(int *_parr, int _arrSize, bool _positive, string _num);
LiczbaHex(LiczbaHex &liczba);
virtual ~LiczbaHex();
void m_display();
static LiczbaHex m_add(LiczbaHex _num1, LiczbaHex _num2, bool _positivity);
static LiczbaHex m_subs(LiczbaHex * _num1, LiczbaHex * _num2, bool _positivity);
static LiczbaHex m_decideSub(LiczbaHex * _num1, LiczbaHex * _num2);
static LiczbaHex m_decideAdd(LiczbaHex _num1, LiczbaHex _num2);
static LiczbaHex m_mul(LiczbaHex _num1, LiczbaHex _num2);
static LiczbaHex m_div(LiczbaHex _num1, LiczbaHex _num2);
static bool m_check(string _num);
static LiczbaHex m_stringToArr(LiczbaHex * _num);
private:
int m_count();
bool m_positive;
int m_arrSize;
string m_num;
int *m_parr;
};
m_stringToArr从
获取LiczbaHex ond写入的对象string m_num to int m_parr
并且它完美运行,不幸的是,在此操作之后, copy1 对象的 m_parr 字段被删除
LiczbaHex::LiczbaHex(string _num)
{
m_num = _num;
if (_num[0] == '-')
{
m_positive = false;
m_arrSize = m_num.length()-1;
}
else
{
m_positive = true;
m_arrSize = m_num.length();
}
m_parr = new int[m_arrSize];
for (int i = 0; i<m_arrSize;i++)
{
m_parr[i]=0;
}
}
LiczbaHex::LiczbaHex(LiczbaHex &liczba)
{
m_positive = liczba.m_positive;
m_arrSize = liczba.m_arrSize;
m_parr = new int[m_arrSize];
m_num = liczba.m_num;
for (int i = 0;i<m_arrSize;i++)
{
m_parr[i] = liczba.m_parr[i];
}
}
我浪费了很多时间,我需要帮助。如果您需要更多信息或代码,请告诉我。