API access to DateTime values

Ruslan Zasukhin sunshine at public.kherson.ua
Wed Mar 8 10:36:59 CST 2006


On 3/8/06 4:01 AM, "Matthew Jew" <mjew at icnc.com> wrote:

>>     I_Value_Ptr pv = fld->get_Value();
>>     I_ValueDateTime_Ptr pdtv = fbl_dynamic_cast<I_ValueDateTime>
>> ( pv );
>> 
>> 
> 
> I used the code above, but got the following compile-time error:
> 
> error: invalid conversion from 'const fbl::I_Value*' to 'fbl::I_Value*'
> 
> I changed the code to read:
> 
>      Const_I_Value_Ptr pv = fld->get_Value();
>      Const_I_ValueDateTime_Ptr pdtv =
> fbl_dynamic_cast<I_ValueDateTime>( pv );
> 
> and then I get the following compile-time error:
> 
> error: cannot dynamic_cast '(+ p)->fbl::smart_ptr<T>::get [with T =
> const fbl::I_Value]()' (of type 'const struct fbl::I_Value*') to type
> 'struct fbl::I_ValueDateTime*' (conversion casts away constness)
> 
> Do you have a solution for this?

Hi Mathew,

Okay I see.

** 1) ** exists 2 versions of get_Value() in I_Field interface:

 virtual Const_I_Value_Ptr    get_Value( void ) const throw() = 0;
 virtual I_Value_Ptr              get_Value( EValueAccess inValue ) throw()
= 0;

As you see first version returns you const value,
second returns you value which you can modify.

So if you want READ values you do:
        Const_I_Value_ptr pv = fld->get_Value()

If you want do WRITE then you should do
        I_Value_ptr pv = fld->get_Value(forAdd)
        I_Value_ptr pv = fld->get_Value(forUpdate)


** 2) ** 

Please note that you can use native C++ dynamic_cast<>() only to native
pointers!
Valentina C++ SDK use heavily smart ptrs. For smart ptrs we have own
Simple template functions fbl_dynamic_cast<>()
    
** 3) **

Your code requires simple correction. Just should be added const

     Const_I_Value_Ptr pv = fld->get_Value();
     Const_I_ValueDateTime_Ptr pdtv = fbl_dynamic_cast<const
I_ValueDateTime>( pv );

Actually this is the same as in native dynamic_cast:

    const my* p = dynamic_cast<const my*>( pp )
                   

-- 
Best regards,

Ruslan Zasukhin
VP Engineering and New Technology
Paradigma Software, Inc

Valentina - Joining Worlds of Information
http://www.paradigmasoft.com

[I feel the need: the need for speed]



More information about the Valentina mailing list