Re: MSVC2005: problem with valarray<valarray<T> >
"Abdelrazak Younes" <younes.a@free.fr> wrote in message
news:OxOuhAEyGHA.4336@TK2MSFTNGP06.phx.gbl
Please find below the source code of those two classes.
template <class T>
class array1d: public valarray<T>
{
public:
array1d()
{
}
virtual ~array1d()
{
}
array1d(const T & val, size_t Dim): valarray<T>(val, Dim)
{
}
};
template <class T>
class array2d: public array1d< array1d<T> >
{
array2d(
const T& val,
size_t nRow,
size_t nCol
)
: array1d< array1d<T> >(array1d<T>(val, nCol), nRow),
{
}
};
I fixed two small bugs (an extraneous comma at the end of one line,
declaring array2d's constructor public) and added
int main() {
array2d<int> a(1, 5, 5);
return 0;
}
The program compiles and runs successfully without crashing. Show the
complete program that actually produces a crash.
The weird thing is that the array2d constructor calls the array1d
destructor
array2d constructor creates a temporary of type array1d<T>, to pass to
array1d< array1d<T> > constructor. This temporary is destroyed shortly
thereafter.
--
With best wishes,
Igor Tandetnik
With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925