Исключение с плавающей точкой, вызванное присвоением значения переменной типа double

Программа получила сигнал SIGFPE, Арифметическое исключение.
xxx :: init (this = 0xbffe47fc, aa = 0x0) в s.cc:1061
1061 цена = 100,0;

Я просто пытаюсь скомпилировать и запустить код без каких-либо изменений на другой машине Linux RH5.6 32bit, и владелец этого приложения скомпилирует его на RH5.3, который не имеет проблем.

GDB BT

B :: INIT

b_init

B :: B

A ::

главный

Вот код

class A : public B
{
A () : a_1(1)
{
init()
}

void init();

int a_1;
};

class B
{
double price;

B()
{
memset(this, 0, sizeof(*this);
b_init(this);
}

int b_init( B* b)
{
return b->init();
}

void init()
{
price = 100.0;
}
};

int main()
{
A a;
}

Я выгляжу очень нормально для меня. Кто-нибудь может пролить свет на это? Спасибо!

-4

Решение

Этот тестовый код отлично работает для меня. Там должно быть что-то еще происходит?

#include <iostream>
using namespace std;

struct teststruct
{
int a;
double b;
};

class test_class
{
public:
void init( struct teststruct * );
double getPrice();
private:
double price;
};

void test_class::init( struct teststruct *test )
{
price = 100.0;
}

double test_class::getPrice()
{
return price;
}

int main ()
{
struct teststruct a;
test_class test;

test.init(&a);
cout << "Double " << test.getPrice() << endl;

return 0;
}

выход:

[hendric@Linux-Test-System ~]$ g++ doubletest.cpp
[hendric@Linux-Test-System ~]$ ./a.out
Double 100
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]