Error: cannot call public/export function someFunction from invariant
simendsjo
simendsjo at gmail.com
Fri Oct 18 02:27:18 PDT 2013
On Friday, 18 October 2013 at 09:08:53 UTC, Jonathan M Davis
wrote:
> On Friday, October 18, 2013 11:04:25 bearophile wrote:
>> simendsjo:
>> > See topic. Why is this not allowed? The function in question
>> > is
>> > not virtual.
>> >
>> > struct S {
>> >
>> > void someFunction() const {}
>> > const invariant() { someFunction(); }
>> >
>> > }
>> > void main() {
>> >
>> > S s;
>> >
>> > }
>>
>> It being not virtual is not important. In what cases is
>> invariant() called, simendsjo? I sense an infinite loop.
>
> Yeah, it's probably because someFunction calls the invariant
> before and after
> it's called. If you want to call a member function from an
> invariant, it
> should be static, or it should be a free function.
Ah, good point - stupid me :) I'll rather move some checking to
pre/post contracts.
More information about the Digitalmars-d-learn
mailing list