Как назначить определенное значение из объекта длинной переменной? - PullRequest
0 голосов
/ 11 апреля 2011

Пример:

long a;
BoundedCounter e;

Поэтому я хочу присвоить значение счетчика приватной переменной в классе a.

a=e;

Попробовал с помощью этого:

long int & operator=(long b)
{
    b=counter;
    return b;
}

и

long int & operator=(long b, BoundedCounter &a)
{
   b=a.getCounter();
   return b;
}

, которые возвращают ошибку компиляции:

не может преобразовать BoundedCounter' to long int 'в присваивании

и

`long int & operator = (long int, BoundedCounter &) 'должно быть нестатической функцией-членом

Как определить оператор = вне класса, который будет работать, когдалевая сторона - это обычная переменная, а не объект?

Ответы [ 2 ]

2 голосов
/ 11 апреля 2011

operator= здесь не подходит, так как левая часть присваивания является примитивным типом (и вы не можете определить operator= для примитивных типов).Попробуйте дать BoundedCounter и operator long, например:

class BoundedCounter
{
public:
    // ...
    operator long() const
    {
        return counter;
        // or return getCounter();
    }
};
1 голос
/ 11 апреля 2011

Ваш код преобразуется из BoundedCounter в long, поэтому вам нужно определить оператор преобразования (приведения) из BoundedCounter в long:

class BoundedCounter {
private:
    long a_long_number;
public:
    operator long() const {
        return a_long_number;
    }
};

Оператор присваивания, которыйвы определили, что позволит вам присвоить long значение экземпляру класса BoundedCounter, что противоположно тому, что вы пытаетесь сделать.

...