stl容器中元素重载&运算符问题

jys830105 2009-09-09 06:58:25
#include <iostream>
#include <deque>
using namespace std;

template<class T>
class ClassA
{
public:
ClassA()
:obj(NULL) { }
~ClassA()
{
}
T** operator&()
{
}//gcc中只要加入这个运算符重载就不能编译通过

protected:

T* obj;
};

int main (int argc, char * const argv[]) {
deque<ClassA<int> > dq;//编译出错
std::cout << "Hello, World!\n";
return 0;
}

以上代码vc下编译通过,gcc下编译不通过。
deque<ClassA<int> > dq;这句编译出错
报错:no matching function for call to 'std::allocator<ClassA<int> >::destroy(int**)'
请高手解惑
...全文
187 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2009-09-10
  • 打赏
  • 举报
回复
不要折腾&运算符重载!
这是几乎禁止重载的。
thy38 2009-09-10
  • 打赏
  • 举报
回复
MinGW-3.4.5通过,没有任何问题。
jys830105 2009-09-10
  • 打赏
  • 举报
回复
Update一下,看看有没有人能帮忙
jys830105 2009-09-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hairetz 的回复:]
引用 4 楼 jys830105 的回复:
引用 3 楼 mengde007 的回复:
编译了下,没有错误;

你用gcc编译的?


楼主是linux环境?得用g++啊
[/Quote]
Apple的MAC OS,用的自带的xcode
jys830105 2009-09-09
  • 打赏
  • 举报
回复
各位兄弟,请看清楚,在gcc下面会编不过,而且好像是在gcc4.0以后才会有问题。问题看起来在因为运算符重载导致了新的stl_construct.h里面有冲突。这个头文件gcc3.3和4.0好像是不一样的
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jys830105 的回复:]
引用 3 楼 mengde007 的回复:
编译了下,没有错误;

你用gcc编译的?
[/Quote]

楼主是linux环境?得用g++啊
sswwssww 2009-09-09
  • 打赏
  • 举报
回复
以下代码VC编译通过,运行正常:


#include "MyClass.h"
/*
#ifndef _MYCLASS_
#define _MYCLASS_
#include <stdlib.h>



template<typename T>
class A
{
protected:
T* obj;
public:
A()
:obj(NULL)
{
}
~A()
{
if(obj!=NULL)
{
delete obj;
obj = NULL;
}
}
T** operator&()
{
}

};

#endif
*/

#include <iostream>
#include <deque>

int main()
{
std::deque<A<int>> dq;

std::cout << "Hello World!\n";

return 0;
}
jys830105 2009-09-09
  • 打赏
  • 举报
回复
我在mac os系统下面,gcc4.0编不过,gcc3.3可以编过,汗~~~
sswwssww 2009-09-09
  • 打赏
  • 举报
回复
你报错的编号是多少号?
jys830105 2009-09-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mengde007 的回复:]
编译了下,没有错误;
[/Quote]
你用gcc编译的?
mengde007 2009-09-09
  • 打赏
  • 举报
回复
编译了下,没有错误;
jys830105 2009-09-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mengde007 的回复:]
T** operator&()
{
}这个函数内部是怎么写的;
[/Quote]
我现在所有的实现去掉了,还是一样,原本是返回obj的地址,return &obj
mengde007 2009-09-09
  • 打赏
  • 举报
回复
T** operator&()
{
}这个函数内部是怎么写的;

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧