| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 699 人关注过本帖
标题:帮我看下为何这里运算符重载失败
只看楼主 加入收藏
lsrwan
Rank: 2
等 级:论坛游民
帖 子:31
专家分:17
注 册:2009-10-11
结帖率:90%
收藏
已结贴  问题点数:20 回复次数:4 
帮我看下为何这里运算符重载失败
#include "stdafx.h"
#include <vector>
#include <deque>
#include <algorithm>
#include <iostream>
#include <ostream>
using namespace std;

class sumsqplus1
{
public :
    sumsqplus1():value(0){};
    int operator {}()
    {
        ++value; return value*value + 1;
    }
private:
    int value;
};


int main( )

{
    vector<int> int_vector(4);
    generate(int_vector.begin(),int_vector.end(),sumsqplus1{});
    for each (int elme in int_vector)
    {
        cout << elme << " " << endl;
    }
    return 0;
}这段代码重载了{},不知道为什么总是失败,要换成()才可以成功,有那个高人知道为什么呢?
1>e:\soft\vc++\test\slt_generate\slt_generate\slt_generate.cpp(16) : error C2833: 'operator {' is not a recognized operator or type
1>e:\soft\vc++\test\slt_generate\slt_generate\slt_generate.cpp(16) : error C2059: syntax error : 'newline'
1>e:\soft\vc++\test\slt_generate\slt_generate\slt_generate.cpp(16) : error C2143: syntax error : missing ';' before '}'
1>e:\soft\vc++\test\slt_generate\slt_generate\slt_generate.cpp(16) : error C2238: unexpected token(s) preceding ';'
1>e:\soft\vc++\test\slt_generate\slt_generate\slt_generate.cpp(16) : fatal error C1903: unable to recover from previous error(s); stopping compilation

[ 本帖最后由 lsrwan 于 2010-4-21 23:29 编辑 ]
搜索更多相关主题的帖子: 重载 失败 运算符 
2010-04-21 23:25
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:4 
不是什么都可以重载的吧?

★★★★★为人民服务★★★★★
2010-04-22 06:20
mylzy159
Rank: 2
等 级:论坛游民
帖 子:61
专家分:23
注 册:2009-4-12
收藏
得分:4 
'operator {' is not a recognized operator or type
  就这句..你明白就行了. 他不能识别.
2010-04-22 08:15
lsrwan
Rank: 2
等 级:论坛游民
帖 子:31
专家分:17
注 册:2009-10-11
收藏
得分:0 
我看到一本书上说只有几个字符不可以重载,比如:: -> . 等几个没说{}不可以重载,上面的代码我用 = 也不能重载,好像只有 () 可以重载,不明白其中的原因.
2010-04-22 13:04
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:4 
不能重载的运算符只有五个,他们是
.
.*
::
sizeof
?:
就这五个,其他的都可以重载。

南国利剑
2010-04-23 23:48
快速回复:帮我看下为何这里运算符重载失败
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011401 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved