Голосование за лучший ответ
Я Красавчег
Мыслитель
(8244)
6 лет назад
Значение объекту не присвоите! Объект - структура, которая в себе содержит данные и функции, а указатель на объект это просто указатель. В вашем случае есть два варианта изменить num. obj.num = 7; Или при создании объекта MyClass obj(5); В данном случае это не указатель, при использовании указателя вместо точки используется ->
obj = new(MyClass);
obj->num = 7;
Алексей
Мудрец
(13611)
6 лет назад
>чтобы я мог переприсваивать значение объекту?
Объяви operator = () с соответствующим типом. Ну, или шаблонным сделай и класс, и оператор:
template <class T>
class Test {
public:
Test(T value): value(value) {}
Test operator= (T const& rhs) {
value = rhs.value;
return *this;
}
private:
T value;
};
#include "iostream"
using namespace std;
class MyClass
{
private:
public:
int num;
MyClass() : num(0)
{}
MyClass(int n) : num(n)
{}
int getNum()
{
return num;
}
MyClass& MyClass::operator=(MyClass& v)
{
num = v.num;
return *this;
}
};
int main()
{
MyClass obj = 5;
cout << obj.num;
obj = 7;//ЗДЕСЬ ОШИБКА
cin.get();
return 0;
}