До переопределения операторов ещё не дошёл пока. Как то нестабильно оно работает...
файл bigintdec.h:
C++ (Qt)
#ifndef BIGINTDEC_H
#define BIGINTDEC_H
#include "widget.h"
#define osn 10
#define maxlen 512
class BI
{
public:
int amount; // количество цифр в числе
int digits[maxlen]; // массив цифр в обратном порядке
// BI input(const QString);
// QString output(BI);
BI input(const QString st)
{
QString s1;
int pos = 0;
BI bgi;
memset(bgi.digits, 0, sizeof(bgi.digits));
for(int i = st.length() - 1; i >= 0 ; i--)
{
s1 = st[i];
bgi.digits[pos++] = s1.toInt();
}
bgi.amount = st.length();
return bgi;
};
QString output(const BI bdi)
{
QString str;
for (int i= bdi.amount - 1; i >= 0; i--)
{
str += QString::number(bdi.digits[i],'g',6);
}
return str;
};
};
#endif // BIGINTDEC_H
файл widget.cpp:
C++ (Qt)
void Widget::MyEventHandler1()
{
/*
QString x = sender()->objectName();
fnpresskey(x.remove(0, 11).toInt());
*/
QString str = "00112233";
BI bdj1;
BI bdj2;
bdj1 = bdj1.input(str);
bdj2 = bdj1;
ui->lineEdit_3->setText(bdj2.output(bdj2));
return;
Так всё работает, но если перенести реализацию функций-членов в файл bigintdec.срр, а в объявлении класса оставить прототипы, и пересобрать проект - вылезает 3 ошибки:
C:\QtSDK\Alexu007\LongArifm\LA1\widget.cpp:140: ошибка: undefined reference to `BI::input(QString)'
C:\QtSDK\Alexu007\LongArifm\LA1\widget.cpp:144: ошибка: undefined reference to `BI::output(BI)'
:-1: ошибка: collect2: ld returned 1 exit status (внизу красными буквами "файл не найден").
Чё за фигня, файл не найден, как я понимаю - bigintdec.срр, оттуда реализации функций теряются - но он к проекту подключён...