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



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

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