*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