*final* class member (D2)

Robert Fraser fraserofthenight at gmail.com
Wed Feb 13 11:21:04 PST 2008


Robert Fraser wrote:
> Denton Cockburn wrote:
>> On Wed, 13 Feb 2008 10:59:26 -0500, Denton Cockburn wrote:
>>
>>> How do I do this?  I'm trying to create a class member here that 
>>> needs to
>>> be initialized in the constructor, but cannot be changed later.
>>>
>>> class A
>>> {
>>>    (const doesn't work) real delegate() dg; // this is that
>>>    function;
>>>
>>>    this(real delegate() dg) { this.dg = dg; }
>>> }
>>>
>>> class B
>>> {
>>>    real foo() { return 3.5; }
>>> }
>>>
>>> class C
>>> {
>>>    real foo() { return 4.5; }
>>> }
>>>
>>> void main()
>>> {
>>>    auto b = new B;
>>>    auto a = new A(&b.foo);
>>>    auto c = new C;
>>>    a.fitness = &c.foo; // I want this to be an error
>>> }
>>
>> formatting issues:
>>
>> (const doesn't work) real delegate() dg; // this is that
>>    function;
>>
>> should be:
>>
>> (const doesn't work) real delegate() dg; // this is that function
>>
> 
> Use "final" :-)

Oops, I thought you meant member function. AFAIK, there's no way to do 
that for a member variable.


More information about the Digitalmars-d-learn mailing list