Problem while using anonymous union in C++

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • SRK

    #1

    Problem while using anonymous union in C++

    Hi,
    I wanted to use an anonymous union within an structure something like
    below -

    struct Test
    {
    union
    {
    std::string user; //char user[50];
    std::string role; //char role[50];
    };
    std::string desc;
    };

    Whenever I use, built in data types such as int, char etc, it works
    perfectly fine, but for user defined dataypes, it gives me error -

    error: member `std::string Test::<anonymou s union>::user' with
    constructor not allowed in union
    error: member `std::string Test::<anonymou s union>::user' with
    destructor not allowed in union
    error: member `std::string Test::<anonymou s union>::user' with copy
    assignment operator not allowed in union
    error: member `std::string Test::<anonymou s union>::role' with
    constructor not allowed in union
    error: member `std::string Test::<anonymou s union>::role' with
    destructor not allowed in union
    error: member `std::string Test::<anonymou s union>::role' with copy
    assignment operator not allowed in union

    Can someone give any idea, how to sort out the problem?

    Thanks in advance.

    - Shiv Ranjan
    kumarsr@gmail.c om
  • anon

    #2
    Re: Problem while using anonymous union in C++

    SRK wrote:
    Hi,
    I wanted to use an anonymous union within an structure something like
    below -
    >
    struct Test
    {
    union
    {
    std::string user; //char user[50];
    std::string role; //char role[50];
    };
    std::string desc;
    };
    This is not allowed (using std::string in a union)
    >
    Whenever I use, built in data types such as int, char etc, it works
    perfectly fine, but for user defined dataypes, it gives me error -
    >
    error: member `std::string Test::<anonymou s union>::user' with
    constructor not allowed in union
    error: member `std::string Test::<anonymou s union>::user' with
    destructor not allowed in union
    error: member `std::string Test::<anonymou s union>::user' with copy
    assignment operator not allowed in union
    error: member `std::string Test::<anonymou s union>::role' with
    constructor not allowed in union
    error: member `std::string Test::<anonymou s union>::role' with
    destructor not allowed in union
    error: member `std::string Test::<anonymou s union>::role' with copy
    assignment operator not allowed in union
    >
    Can someone give any idea, how to sort out the problem?
    >
    Listen what your compiler is telling you

    Comment

    • SRK

      #3
      Re: Problem while using anonymous union in C++

      On Oct 21, 3:06 pm, anon <a...@no.invali dwrote:
      SRK wrote:
      Hi,
      I wanted to use an anonymous union within an structure something like
      below -
      >
      struct Test
      {
          union
          {
              std::string user; //char user[50];
              std::string role;  //char role[50];
          };
          std::string desc;
      };
      >
      This is not allowed (using std::string in a union)
      >
      >
      >
      >
      >
      Whenever I use, built in data types such as int, char etc, it works
      perfectly fine, but for user defined dataypes, it gives me error -
      >
      error: member `std::string Test::<anonymou s union>::user' with
      constructor not allowed in union
      error: member `std::string Test::<anonymou s union>::user' with
      destructor not allowed in union
      error: member `std::string Test::<anonymou s union>::user' with copy
      assignment operator not allowed in union
      error: member `std::string Test::<anonymou s union>::role' with
      constructor not allowed in union
      error: member `std::string Test::<anonymou s union>::role' with
      destructor not allowed in union
      error: member `std::string Test::<anonymou s union>::role' with copy
      assignment operator not allowed in union
      >
      Can someone give any idea, how to sort out the problem?
      >
      Listen what your compiler is telling you
      I understand what the compiler is saying and thats why I wanted
      whether there is any workaround for that or not?

      - Shiv

      Comment

      • dertopper@web.de

        #4
        Re: Problem while using anonymous union in C++

        SRK wrote:
        Hi,
        I wanted to use an anonymous union within an structure something like
        below -
        >
        struct Test
        {
            union
            {
                std::string user; //char user[50];
                std::string role;  //char role[50];
            };
            std::string desc;
        };
        >
        This is not allowed (using std::string in a union)
        >
        Whenever I use, built in data types such as int, char etc, it works
        perfectly fine, but for user defined dataypes, it gives me error -
        >
        [snipped error messages]
        >
        Can someone give any idea, how to sort out the problem?
        >
        Listen what your compiler is telling you
        >
        I understand what the compiler is saying and thats why I wanted
        whether there is any workaround for that or not?
        There's no workaround for this. Why don't you use the following:

        class Test
        {
        private:
        std::string user_or_role;
        public:
        std::string& get_user ()
        {
        return user_or_role;
        }

        std::string& get_role ()
        {
        return user_or_role;
        }
        std::string desc;
        };

        Regards,
        Stuart

        Comment

        Working...