Anders Logg wrote:
> On Thu, Nov 05, 2009 at 12:14:36AM +0100, Marie Rognes wrote:
>> Anders Logg wrote:
>>> On Wed, Nov 04, 2009 at 01:10:17PM +0100, Johan Hake wrote:
>>>
>>>> On Wednesday 04 November 2009 09:37:55 Garth N. Wells wrote:
>>>>
>>>>> kent-...@simula.no wrote:
>>>>>
>>>>>> Hi, I am very happy with the  Expression, but old code like
>>>>>>
>>>>>> class Dabla(Function):
>>>>>>     def eval(...)
>>>>>>
>>>>>> still works.
>>>>>>
>>>>>> The only problem is that the function is zero even though eval is
>>>>>> implemented. Is it
>>>>>> possible to turn this old code into an error?
>>>>>>
>>>>> In C++, no. There is no mechanism in C++ to prevent a user overloading
>>>>> or hiding a member function.
>>>>>
>>>> In Python, using meta classes, yes.
>>>>
>>>> This is a nice exercise for those of you who want to get to know meta 
>>>> classes
>>>> in Python. ;) If and when I have time I can fix this. (Heading for the 
>>>> states
>>>> next Tuesday)
>>>>
>>>> Should we allow sub-classing of Function, but not overloading of eval?
>>>>
>>> We could start by disallowing subclassing the Function class and then
>>> if a time comes when someone wants to subclass it, we can rethink it.
>>>
>>>
>>
>> Nooo! (Someone(tm) wants to subclass it already.)
> 
> ok, so let's rethink this. :-)
> 
> Is it worth the effort to disallow overload of eval?
> 

I don't think that it's possible. I searched the web on this a few weeks 
back and came to the conclusion that it's simply not possible. 
Function::eval is not virtual, which is a hint. The only other step is 
to put an unambiguous comment in the Function.h that you overload eval 
at your peril.

Garth

> --
> Anders
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@fenics.org
> http://www.fenics.org/mailman/listinfo/dolfin-dev
_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@fenics.org
http://www.fenics.org/mailman/listinfo/dolfin-dev

Reply via email to