Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #87345

Re: problem with c++ union as argument:

From Bonita Montero <Bonita.Montero@gmail.com>
Newsgroups comp.lang.c++
Subject Re: problem with c++ union as argument:
Date 2022-11-13 11:05 +0100
Organization A noiseless patient Spider
Message-ID <tkqfgn$1e8vv$1@dont-email.me> (permalink)
References <tkqbg6$1dvjo$1@dont-email.me>

Show all headers | View raw


I'v not completely checked your code, but I guess you need a variant<>.

Am 13.11.2022 um 09:56 schrieb aotto1968:
> Hi, the following code failed to compile on Create
> 
> error: no matching function for call to 
> 'ccmqmsgque::MqMsgqueCallbackC::MqMsgqueCallbackC(const 
> ccmqmsgque::MqMsgqueCallbackC::MqMsgqueCallbackU&)'
> 
> namespace ccmqmsgque {
>    struct MqMsgqueCallbackC {
>      enum MqMsgqueCallbackE  {
>        PC_CallbackF,
>        PC_StaticCallbackF,
>        PC_IService,
>        PC_IEvent,
>        PC_IServerSetup,
>        PC_IServerCleanup,
>        PC_IBgError
>      } type;
> 
>      union MqMsgqueCallbackU {
>        MqContextC::CallbackF         Callback;
>        MqContextC::StaticCallbackF   StaticCallback;
>        IService *                    Service;
>        IEvent *                      Event;
>        IServerSetup *                ServerSetup;
>        IServerCleanup *              ServerCleanup;
>        IBgError *                    BgError;
>      } call;
> 
>      public:
>        MqMsgqueCallbackC(MqContextC::CallbackF const callback);
>        MqMsgqueCallbackC(MqContextC::StaticCallbackF const callback);
>        MqMsgqueCallbackC(IService * const service);
> 
>        MqMsgqueCallbackC(IEvent * const event);
>        MqMsgqueCallbackC(IServerSetup * const serverSetup);
>        MqMsgqueCallbackC(IServerCleanup * const serverCleanup);
>        MqMsgqueCallbackC(IBgError * const bgError);
> 
>        MqMsgqueCallbackC(MQ_CTX const context, MqMsgqueCallbackC* const 
> copy);
> 
>        static MK_CBP Create(const union MqMsgqueCallbackU& callback) {
>          return (MK_CBP) new MqMsgqueCallbackC(callback);
>        }
> 
>        static enum MkErrorE  Call ( MQ_CALLBACK_SERVICE_CALL_ARGS );
>        static void           Free ( MQ_RT_ARGS MQ_CTX const context, 
> MK_PTR *dataP);
>        static void           Copy ( MQ_RT_ARGS MQ_CTX const context, 
> MK_PTR *dataP);
>    };
> };
> 
> 
> Problem
> 
> 1. I have a union with all possible argument-types and a CTOR for each type
> 2. Now I want to have a static "Create" function to call the CTOR for 
> each type
> 3. I know I could write !! 7 !! "Create", just one for every type BUT I 
> want to
>     use the union
> 
> Question, how I do it?
> 
> 
> mfg
> AO

Back to comp.lang.c++ | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

problem with c++ union as argument: aotto1968 <aotto1968@t-online.de> - 2022-11-13 09:56 +0100
  Re: problem with c++ union as argument: Bonita Montero <Bonita.Montero@gmail.com> - 2022-11-13 11:05 +0100
  Re: problem with c++ union as argument: Marcel Mueller <news.5.maazl@spamgourmet.org> - 2022-11-13 12:48 +0100
    Re: problem with c++ union as argument: Michael S <already5chosen@yahoo.com> - 2022-11-13 04:44 -0800
    Re: problem with c++ union as argument: Bonita Montero <Bonita.Montero@gmail.com> - 2022-11-13 19:52 +0100
  Re: problem with c++ union as argument: Michael S <already5chosen@yahoo.com> - 2022-11-13 04:28 -0800
  Re: problem with c++ union as argument: Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-11-13 11:39 -0800
  Re: problem with c++ union as argument: Juha Nieminen <nospam@thanks.invalid> - 2022-11-16 09:36 +0000
  Re: problem with c++ union as argument: Jorgen Grahn <grahn+nntp@snipabacken.se> - 2022-11-19 22:42 +0000

csiph-web