社区
C++ 语言
帖子详情
重载operator&之后
snailmmx
2003-08-22 08:05:17
一个类A重载了operator&,然后对于它的一个对象aaa,&aaa就成了去调用这个成员函数了。但现在我想取aaa的地址,自么办?
另:这个类我没办法修改。
...全文
115
9
打赏
收藏
重载operator&之后
一个类A重载了operator&,然后对于它的一个对象aaa,&aaa就成了去调用这个成员函数了。但现在我想取aaa的地址,自么办? 另:这个类我没办法修改。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sevecol
2003-08-23
打赏
举报
回复
下面的可能最安全
template<typename T>
T* GetPoint(T& t)
{
class Point:public T
{
int tt;
T* GetAddress(T* t)
{
return t;
}
public:
T* operator&()
{
return GetAddress(this);
};
};
return (static_cast<Point&>(t)).operator&();
};
sevecol
2003-08-23
打赏
举报
回复
template<typename T>
T* GetPoint(T& t)
{
class Point:public T
{
public:
T* operator&()
{
return (T*)this;
};
};
return (static_cast<Point&>(t)).operator&();
};
短歌如风
2003-08-22
打赏
举报
回复
啊!忘了用this了。如果不要求使用opreator&的话,sevecol的方法不错。
由于_com_ptr没有虚成员,也没有多继承,其时它的opreator&返回的还是和对象的指针值一样,就是多了一个讨厌的assert.去掉后强制转型一下就能用。
短歌如风
2003-08-22
打赏
举报
回复
找到_com_ptr中的自定义的operator&代码,把assert删掉就可以用了。不过你就要自己保证在调用CreateInstance时它的intf成员应该为NULL(未调用过CreateInstance、未赋值或调用了Release、赋了一个NULL值)
sevecol
2003-08-22
打赏
举报
回复
帮你封装了一个函数
template<typename T>
T* GetPoint(T& t)
{
class Point:public T
{
public:
Point* operator&()
{
return this;
};
};
Point& temp=static_cast<Point&>(t);
return (T*)(&temp);
};
sevecol
2003-08-22
打赏
举报
回复
class Base
{
int t;
public:
int operator&()
{
return 10;
};
};
class Test:public Base
{
public:
Test* operator&()
{
return this;
};
};
//
Base a;
Test& b=static_cast<Test&>(a);
Base* p=(Base*)(&b);
sandrowjw
2003-08-22
打赏
举报
回复
那就干脆跳过_com_ptr吧。
snailmmx
2003-08-22
打赏
举报
回复
呜呼,我用的正是_com_ptr
短歌如风
2003-08-22
打赏
举报
回复
没有办法。
如果你的类没有虚函数,还可以用取第一个成员的地址再强制转型来得到(不过很危险)。
运算符重载要少用,而operator&(取地址)根本不要重载。看一下这个贴子:
http://expert.csdn.net/Expert/TopicView1.asp?id=1709597
C++的字面量运算符
重载
literal
operator
【代码】C++的字面量运算符
重载
literal
operator
。
Kotlin运算符
重载
与约定
java中不支持运算符
重载
,而Kotlin支持操作符
重载
。这些操作符在Kotlin中是约定好的固定符号。(如:加号 + 乘号 * 等),和固定的优先级。而应用这样的操作符,我们也必须使用映射固定名字的成员函数或者扩展函数(加法 plus 乘法 times)。
重载
操作符的函数需要用
operator
修饰符来标记。 - 什么是运算符
重载
运算符
重载
时对已有的运算符赋予新的含义,使一个运算符作用于不同类型...
C++:
重载
前缀运算符与
重载
后缀运算符(以++为例)
C++:
重载
前缀运算符与
重载
后缀运算符(以++为例)标签: C++
重载
运算符 前缀运算符 后缀运算符by 小威威在C++中如何区分
重载
前缀运算符与
重载
后缀运算符呢?不难发现,
重载
后缀运算符带有形参int而
重载
前缀运算符没有。这个形参的作用只是为了区分二者,并没有实际的意义。我们知道,a++与++a是有区别的,如c = a++ 与 c = ++a,两个c的值是不同的。因为前者是先将a赋给变量c,
c++ code:(10)
operator
overload
//输入 //多组数据,每组一行,整数 n //输出 //对每组数据,输出一行,包括两个整数, n - 5 和 n - 8 //输入样例 //20 //30 //输出样例 //15, 12 //25, 22 #include <iostream> using namespace std; class MyInt { private: int nVal; public: My...
【Kotlin】常用的 Kotlin 类 ① ( 嵌套类 | 数据类 | 数据类 copy 函数 | 数据类解构声明
operator
fun component1 | 数据类运算符
重载
)
一、嵌套类、 二、数据类、 三、数据类 copy 函数、 四、数据类解构声明、 1、Kotlin 普通类解构声明
operator
fun component1、 2、数据类解构声明、 五、运算符
重载
函数、
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章