1
我有XCode的一個problema編程時在C++中,任何幫助將好評:)EXC_BAD_ACCESS(碼= 1,地址= 0x1f400000010)
#include "TFloat.h"
#include <math.h>
TFloat::TFloat()
{
_valor = 0.0;
set_precision(52);
recortar();
}
TFloat::TFloat(size_t t)
{
_valor = 0.0;
set_precision(t);
recortar();
}
TFloat::TFloat(int i, size_t t)
{
_valor = (double) i;
set_precision(t);
recortar();
}
TFloat::TFloat(float f, size_t t)
{
_valor = (double) f;
set_precision(t);
recortar();
}
TFloat::TFloat(double f, size_t t)
{
_valor = f;
set_precision(t);
recortar();
}
double TFloat::dbl() const
{
return _valor;
}
void TFloat::operator =(const TFloat& f)
{
_valor = f._valor;
_t = f._t;
}
void TFloat::operator =(const double& f)
{
_valor = f;
recortar();
}
bool TFloat::operator ==(const TFloat& f) const
{
return (_valor == f._valor);
}
TFloat TFloat::operator + (const TFloat& f) const
{
double result = _valor + f._valor;
return TFloat(result, _t);
}
TFloat TFloat::operator - (const TFloat& f) const
{
double result = _valor - f._valor;
return TFloat(result, _t);
}
TFloat TFloat::operator * (const TFloat& f) const
{
double result = _valor * f._valor;
return TFloat(result, _t);
}
TFloat TFloat::operator/(const TFloat& f) const
{
double result = _valor/f._valor;
return TFloat(result, _t);
}
TFloat TFloat::exponencial() const
{
double result = exp(_valor);
return TFloat(result, _t);
}
TFloat TFloat::operator+ (const double& f) const
{
return this->operator+(TFloat(f,_t));
}
TFloat TFloat::operator- (const double& f) const
{
return this->operator-(TFloat(f,_t));
}
TFloat TFloat::operator* (const double& f) const
{
return this->operator*(TFloat(f,_t));
}
TFloat TFloat::operator/(const double& f) const
{
return this->operator/(TFloat(f,_t));
}
void TFloat::recortar()
{
bitset<64> * bits;
bits = (bitset<64>*) &_valor;
for(size_t i = 0 ; i < (52 - _t); i++)
{
(*bits)[i] = 0;
}
}
而在此函數中使用 「recortar」 出現的問題:
TFloat::TFloat(double f, size_t t)
{
_valor = f;
set_precision(t);
recortar();
}
當我做這個調用它的main.cpp:
size_t _precision = precision(51);
TFloat Beta(0.0,_precision);
我認爲這是一個記憶問題,但我不知道如何解決它。謝謝!
你不能盲目地把一個double轉換成一個bitset。 –
請製作一個[testcase](http://sscce.org) - 你期望如何調試_so many_ lines? –
你已經忘記了'bitset'是一個複雜的類型!您不能簡單地將double的基礎位C-cast到「bitset」對象的基礎位。它不僅僅是一系列的值字節。 –