重载运算符后的继续问题

时间:2008-05-09 09:22:37   来源:论坛整理  作者:  编辑:chinaitzhe

在类A中重载了运算符
在类B中也重载了运算符
然后为A和B类定义一个派生类C,即 class C:public A,public B
在main函数中建立C类的对象m,n,p,语句p=m n出现编译错误,因为运算符 是不明确的。
假如我想规定main函数中m n中的 运算是基类B中 运算,那么我的程序应该怎么写呢?

网友回复:关注!

网友回复:用显式调用重载函数,并指定是属于B类的 B::operate ();
网友回复:p=m n

你这里要用返回值是 C 类型的 operator 函数. 而且你要调用 B 中的. 那B中这个函数是怎么声明的? 有点荒谬?
网友回复:

引用 2 楼 lockhall 的回复:
用显式调用重载函数,并指定是属于B类的 B::operate ();


我需要的解决方法是能够直接用运算符 调用那个函数,用B::operate ()不够简洁。
网友回复:clsss C : public A, public B
{
public :
using B::operator ; //假如是像普通的函数一样你这样试试吧

网友回复:
引用 5 楼 cunsh 的回复:
clsss C : public A, public B
{
public :
using B::operator ; //假如是像普通的函数一样你这样试试吧


貌似不行。。。。
error C2873: ' ' : symbol cannot be used in a using-declaration


我是用友员函数重载 的,这有没影响?
网友回复:
引用 2 楼 lockhall 的回复:
用显式调用重载函数,并指定是属于B类的 B::operate ();

不知道这个MultiInheritence行不行。
MARK
网友回复:
引用楼主 TinkyWinky 的帖子:
在类A中重载了运算符
在类B中也重载了运算符
然后为A和B类定义一个派生类C,即 class C:public A,public B
在main函数中建立C类的对象m,n,p,语句p=m n出现编译错误,因为运算符 是不明确的。
假如我想规定main函数中m n中的 运算是基类B中 运算,那么我的程序应该怎么写呢?


因为运算符 是不明确的,你明确一下就可以了。
用A的还是B的,你说明白就可以了。
网友回复:
引用 6 楼 TinkyWinky 的回复:
引用 5 楼 cunsh 的回复:
clsss C : public A, public B
{
public :
using B::operator ; //假如是像普通的函数一样你这样试试吧


貌似不行。。。。
error C2873: ' ' : symbol cannot be used in a using-declaration


我是用友员函数重载 的,这有没影响?

你是友元的话,就不好办了。因为重载了不知道调用那个好。
恐怕要写成:
const B& B_m=m,B_n=n;
p=B_m B_n;
网友回复:把A,B 里面的重载用虚函数可以不可以呢?
网友回复:m.B::operator (n)应该可以
但是不要使用多继续了,尤其是基类有相同函数的时候,这样只是使得自己更麻烦而已。没有多少情况是必须使用多重继续的

关键字:重载,运算,继续,问题,
上一篇:结构体赋值

相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面