'The non-static const member type cannot use the default assignment operator' - what does this mean?

This class puts the following error: 'non-static const member' const int Member :: membershipNo ', cannot use the default assignment operator'. It is strange that this code repeats in another project and works fine. Can you help me? Correctly?

Member.h

class Member : public Person
    {
    public:
        Member();
        Member(int membershipNo);
        virtual ~Member();

        int getMembershipNo() const;

    private:
        const int membershipNo;

        friend class boost::serialization::access;
        template<class Archive>
        void serialize(Archive& ar, const unsigned int version)
        {
            ar & boost::serialization::base_object<Person>(*this);
            ar & membershipNo;
        }

    };

Member.cpp

Member::Member() : membershipNo(0)
{
    Person();
}

Member::Member(int memberNo) : membershipNo(memberNo)
{
    Person();
}

Member::~Member()
{
    // TODO Auto-generated destructor stub
}

int Member::getMembershipNo() const
{
    return membershipNo;
}
+5
source share
2 answers

Presumably, somewhere in your code you are assigning Membersomething like this:

Member m1, m2;
m1 = m2;

Or you use it in a context that requires type assignment.

Member, . , const, . .

, , , , m1 membershipNo? m2 membershipNo? , membershipNo - const? : ", ".

/ X , X :

  • const ( )
  • [...]

, Member, :

Member& Member::operator=(const Member& other)
{
  // Copy things from other to this
}

const. , , membershipNo, ? , , , const, .

- , membershipNo :

Member::Member(const Member& other)
  : membershipNo(other.membershipNo)
{
  // ...
}

:

Member m1;
Member m2 = m1;
+7

, , - Member . , . , - , , "" .

, : A) , B) .

+2

All Articles