The workaround in algparam.h does solve the problem. 
Great work, Thanks Alex

-----Original Message-----
From: Richard Peters [mailto:[EMAIL PROTECTED]
Sent: Donnerstag, 17. Oktober 2002 09:19
To: [EMAIL PROTECTED]
Subject: Re: Problems with contructor of ECDH<ECP>::Domain


Alexander Schmitt wrote:
> Hello,
>
> when I use the ECDH<ECP>::Domain class as a member property of a
> class an call the contructor in the of ECDH<ECP>::Domain in the
> following way:
> <snip>
> Then there are occuring a application crash, when the object is
> defined. In my case the object is defined globally in the
> application, so it crashs immediately.

The global definition seems to be the problem. Inside the constructor,
this is used:

line 286, file algparam.h:
if (valueType == g_typeidInteger && typeid(T) == typeid(int))

line 9, file algparam.cpp:

const std::type_info &g_typeidInteger = typeid(Integer);

This is another global definition. The C++ standard doesn't specify the
order in which global definitions are initialised, and in this case the
compiler initialises your TestClass tc first. The reference
g_typeidInteger is still set to *NULL, and the valueType ==
g_typeidInteger crashes. The workaround is: put your TestClass tc inside
main(). Another option is to change

if (valueType == g_typeidInteger && typeid(T) == typeid(int))

to

if (valueType == typeid(Integer) && typeid(T) == typeid(int))

inside algparam.h



Best regards,

Richard Peters

Reply via email to