| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 983 人关注过本帖
标题:有关右值和左值引用成员函数的问题,不知道为什么有错?
只看楼主 加入收藏
忠犬八公
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-3-20
结帖率:100%
收藏
已结贴  问题点数:15 回复次数:8 
有关右值和左值引用成员函数的问题,不知道为什么有错?
程序代码:
#include <iostream>
#include <vector>

using namespace std;

class Foo
{
public:
    Foo()=default;
    Foo(initializer_list<int> il):data(il) {}
    Foo sorted() &&;
    Foo sorted() const &;
    void print() const;
private:
    vector<int> data;
};

Foo Foo::sorted() &&
{
    sort(data.begin(),data.end());
    cout<<"调用右值引用函数"<<endl;
    return *this;
}

Foo Foo::sorted() const &
{
    Foo ret(*this);
    sort(ret.data.begin(),ret.data.end());
    cout<<"调用左值引用函数"<<endl;
    return ret;
}

void Foo::print() const
{
    for(auto c:data)
        cout<<c<<" ";
}

int main()
{
    Foo f1({3,4,6,1,8,9,0,2}),f2({7,6,5,4,3});
    f1.sorted();
    std::move(f2).sorted();
    f1.print();
    f2.print();

    return 0;
}

成员函数sorted那里提示有错!不知道为什么?
2014-04-21 23:42
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:8 
首先,这是最重要的一点,编译失败的话,你应该贴出编译器给出的错误信息,而不是让别人通过肉眼去找错。

其次,你用了sort,但却无一处声明定义它。这是基础知识呀
#include <algorithm>


2014-04-22 10:47
忠犬八公
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-3-20
收藏
得分:0 
回复 2 楼 rjsp
||=== Primer, Debug ===|
C:\Users\Administrator\Desktop\C++ Primer\C++ Primer 书中例子\新建文件夹\Primer\main.cpp|12|error: expected ';' at end of member declaration|
C:\Users\Administrator\Desktop\C++ Primer\C++ Primer 书中例子\新建文件夹\Primer\main.cpp|12|error: expected unqualified-id before ';' token|
C:\Users\Administrator\Desktop\C++ Primer\C++ Primer 书中例子\新建文件夹\Primer\main.cpp|13|error: expected ';' at end of member declaration|
C:\Users\Administrator\Desktop\C++ Primer\C++ Primer 书中例子\新建文件夹\Primer\main.cpp|13|error: expected unqualified-id before ';' token|
C:\Users\Administrator\Desktop\C++ Primer\C++ Primer 书中例子\新建文件夹\Primer\main.cpp|19|error: expected initializer before '&&' token|
C:\Users\Administrator\Desktop\C++ Primer\C++ Primer 书中例子\新建文件夹\Primer\main.cpp|26|error: expected initializer before '&' token|
||=== 已完成构建: 6 errors, 0 warnings (0 minutes, 1 seconds) ===|
你说的对,给出错误信息,加了之后还是这个错!
2014-04-22 11:17
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
你用的是什么编译器?
你换个支持C++标准的编译器试试看。比如我用 g++4.8.1 带上编译参数 -std=c++11 就可以编译成功。
2014-04-22 12:06
hubinyes
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:104
专家分:557
注 册:2014-2-4
收藏
得分:8 
孤陋寡闻,看不懂,,default是什么
2014-04-22 21:30
忠犬八公
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-3-20
收藏
得分:0 
回复 4 楼 rjsp
我用的是Code::Blocks编程环境,编译器叫GNU GCC CompilerC++标准其它都支持,就这个不支持,你说的g++不知道怎么搞

[ 本帖最后由 忠犬八公 于 2014-4-22 22:35 编辑 ]
2014-04-22 22:33
忠犬八公
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-3-20
收藏
得分:0 
回复 4 楼 rjsp
换个编译器后就提示unrecognized command line option '-std=c++11'不知道怎么搞了?
2014-04-22 23:45
发发发可
Rank: 1
来 自:山东
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-4-21
收藏
得分:0 
回复 5 楼 hubinyes
c++11  使用编译器默认的默认构造函数

2014-04-23 12:38
鸥翔鱼游
Rank: 5Rank: 5
等 级:职业侠客
帖 子:182
专家分:323
注 册:2014-4-19
收藏
得分:0 
观摩技术性回复
2014-04-23 12:59
快速回复:有关右值和左值引用成员函数的问题,不知道为什么有错?
数据加载中...
 
   



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

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