Привет вот код !
не могу присвоить te2 = te;
то есть объект базового класса объекту наследника. в чем моя ошибка ?
#include <iostream>
using namespace std;
class Test {
public:
Test(int t = 0);
Test& operator=(const Test& tt);
void get();
private:
int m_t;
};
void Test::get(){
cout<<m_t<<endl;
}
Test::Test(int t):
m_t(t)
{
}
Test& Test::operator=(const Test& tt){
if (this == &tt)
{
return *this;
}
else
{
m_t = tt.m_t+2000;
return *this;
}
}
class Test2: public Test {
public:
Test2 (int tt = 0);
Test2& operator=(const Test2& tt);
private:
int m_tt;
};
Test2::Test2(int tt):
Test(tt)
{
}
Test2& Test2::operator=(const Test2& tt)
{
if (this != &tt)
{
Test::operator=(tt);
m_tt = tt.m_tt;
}
return *this;
}
int main(){
Test te(1);
Test2 te2(10);
te.get();
te2.get();
cout<<"___________"<<endl;
te2 = te;
te2.get();
te.get();
return 0;
}
ошибка
[Error] no match for 'operator=' (operand types are 'Test2' and 'Test')