diff --git a/finitetr.cpp b/finitetr.cpp index a69487a496717b7204b995ae77f5550a2ed0e965..2572744956b3a5357b47c0a3492bca73a085d42c 100644 --- a/finitetr.cpp +++ b/finitetr.cpp @@ -26,6 +26,7 @@ FiniteTransmitionline::FiniteTransmitionline(fvalue c, fvalue r, unsigned int n) FiniteTransmitionline::FiniteTransmitionline(std::string paramStr) { + std::vector<std::string> tokens = tokenize(paramStr, ','); if(tokens.size() < paramCount()) { @@ -33,6 +34,8 @@ FiniteTransmitionline::FiniteTransmitionline(std::string paramStr) _C = 1e-6; _R = 1000; _n = 4; + if(subComponant) + delete subComponant; subComponant = createTransmitionLine(_C, _R, _n); return; } @@ -43,6 +46,8 @@ FiniteTransmitionline::FiniteTransmitionline(std::string paramStr) _R = std::stod(tokens[0]); _C = std::stod(tokens[1]); _n = std::stod(tokens[2]); + if(subComponant) + delete subComponant; subComponant = createTransmitionLine(_C, _R, _n); } catch(const std::invalid_argument& ia) @@ -58,6 +63,8 @@ FiniteTransmitionline::FiniteTransmitionline(const FiniteTransmitionline& in) _R = in._R; _C = in._C; _n = in._n; + if(subComponant) + delete subComponant; subComponant = createTransmitionLine(_C, _R, _n); } @@ -98,6 +105,10 @@ void FiniteTransmitionline::setParam(const std::vector<fvalue>& param) } _n = param[2]; + + if(subComponant) + delete subComponant; + subComponant = createTransmitionLine(_C, _R, _n); } char FiniteTransmitionline::getComponantChar() const