Я пришел сюда, чтобы спросить кое-что, что я не могу понять самостоятельно. Я кодировал небольшой класс, который хранит массив из 32 бит и может выполнять простые математические операции, такие как + -/и *.Оператор наследования и назначения класса C++
Пусть у меня есть класс, как:
class Binary_Class
{
char bin[32]; // 32 bits array to hold an unsigned binary number
void set_dec(int value){}; // setting the bin[32] value based on input value
//i have operator + and = to perform on objects of this class.
Binary_Class& operator= (const Binary_Class&);
const Binary_Class operator+ (const Binary_Class&);
}
Till здесь, никаких проблем не приходят, если я объявляю 3 объектов a
, b
, c
класса Binary_Class
, затем set_dec
к a
и b
, оператору c=a+b
может можно использовать (?)
Однако я хочу, чтобы расширить класс бинарник с помощью нового класса
class Binary_Class_Extended: public Binary_Class
{
// weird functions
}
Если я объявляю 3 объекта a
, b
, c
класса Binary_Class_Extended
, я до сих пор в состоянии использовать c=a+b
как же до этого?
В Netbean он говорит, что нет никакого оператора =, что соответствует моему c=a+b
, если все из Binary_Class_Extended
, но если я объявляю c
как Binary_Class
что заявление работы. Это означает, что a+b
возвращает const Binary_Class
, как будто operator+
не переносится в новый класс.
Я что-то упустил или так оно и есть? Конечно, я могу опубликовать весь код, потому что это просто задание, но я думаю, что этой информации пока достаточно.
Update
class Binary_Class
{
char bin[32]; // 32 bits array to hold an unsigned binary number
void set_dec(int value){}; // setting the bin[32] value based on input value
//i have operator + and = to perform on objects of this class.
Binary_Class& operator= (const Binary_Class&);
const Binary_Class operator+ (const Binary_Class&) const;
}
class Binary_Class_Extended: public Binary_Class
{
// weird functions
}
Когда я пытаюсь, чтобы все объекты Binary_Class_Extended
эта ошибка появляется: main.cpp:285: error: no match for 'operator=' in 'sd = ((Binary_Class*)(&sa))->Binary_Class::operator+(((const Binary_Class&)((const Binary_Class*)((Binary_Class*)(&sb)))))'
Binary_ET_Class sa,sb,sc;
sc=sa+sb
// инициализируется sa
и sb
непредставленных нулевое значение;
полный исходный код, который я работал на: http://pastebin.com/eiVz0f5p
Пожалуйста, используйте правильную капитализацию. – Antimony
Ах, спасибо за исправление сообщения. Мой разум не был сосредоточен на том, что в то время, извините. – Luong