From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: "G.B." Newsgroups: comp.lang.ada Subject: Re: I'm facing an issue with: call to abstract procedure must be dispatching Date: Tue, 8 Dec 2015 17:59:15 +0100 Organization: A noiseless patient Spider Message-ID: References: <8bc7fd76-f00a-4eea-9715-470af028fc84@googlegroups.com> Reply-To: nonlegitur@futureapps.de Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Tue, 8 Dec 2015 16:56:48 -0000 (UTC) Injection-Info: mx02.eternal-september.org; posting-host="b96887e80893c84a90c3007226ca0d1c"; logging-data="12110"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+5KUxBwZ/CL3bTiJQ/NG3rbtpXocCeuu4=" User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Thunderbird/38.4.0 In-Reply-To: <8bc7fd76-f00a-4eea-9715-470af028fc84@googlegroups.com> Cancel-Lock: sha1:QYtkVl4B84OUCZfgEbDptZH32fo= Xref: news.eternal-september.org comp.lang.ada:28708 Date: 2015-12-08T17:59:15+01:00 List-Id: On 08.12.15 17:45, Serge Robyns wrote: > procedure test is > > type T_Store is new T_Asbtract_Store with null record; > > overriding procedure Insert (Store : in out T_Store; > Client : in T_Client'Class) is > begin > null; > end Insert; > > A_Store : access T_Asbtract_Store; > The_Store : aliased T_Store; > Client : T_Client; > > begin > A_Store := T_Asbtract_Store (The_Store)'Access; > A_Store.Insert (Client); > end test; > > The compiler does not like "A_Store.Insert (Client)". > Also with this construct I've to use an access variable ... > > Anyone can shed a light on this or suggest a smarter Ada way? Just dispatch: procedure test is type T_Store is new T_Asbtract_Store with null record; overriding procedure Insert (Store : in out T_Store; Client : in T_Client'Class) is begin null; end Insert; procedure Wanting_Some_Store (A_Store : in out T_Asbtract_Store'Class; A_Client : T_client) is begin A_Store.Insert (A_Client); end Wanting_Some_Store; Client : T_Client; The_Store : T_Store; begin Wanting_Some_Store (The_Store, Client); end test;