【发布时间】:2013-06-18 04:28:45
【问题描述】:
我来这里是想问一些我自己无法解决的问题。我一直在编写一个存储 32 位数组的小类,并且可以执行简单的数学运算,例如 +、-、/ 和 *.
假设我有这样的课程:
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&);
}
到目前为止,如果我声明类 Binary_Class 的 3 个对象 a、b、c,然后是 set_dec 到 a 和 b,则声明 c=a+b可以用(?)
但是,我想通过使用新类来扩展类二进制文件
class Binary_Class_Extended: public Binary_Class
{
// weird functions
}
如果我声明了Binary_Class_Extended类的3个对象a、b、c,我还能像之前一样使用c=a+b吗?
在 Netbean 中,它说没有 operator= 与我的 c=a+b 匹配,如果所有都是 Binary_Class_Extended,
但如果我将c 声明为Binary_Class,则该声明有效。这意味着a+b 返回一个const Binary_Class,就好像operator+ 没有被带到新类中一样。
是我遗漏了什么还是原来的样子?
当然,我可以发布整个代码,因为它只是一个作业,但我认为这些信息现在就足够了。
更新
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: 错误:'sd = ((Binary_Class*)(&sa))->Binary_Class::operator+(((const Binary_Class&)((const Binary_Class*)) 中的 'operator=' 不匹配(Binary_Class*)(&sb)))))'
Binary_ET_Class sa,sb,sc;
sc=sa+sb //初始化sa和sb为非空值;
我一直在研究的完整源代码:https://pastebin.com/eiVz0f5p
【问题讨论】:
-
请使用正确的大小写。
-
啊,感谢您更正帖子。抱歉,当时我的注意力并不集中在这上面。
标签: c++ class inheritance binary operator-keyword