| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1258 人关注过本帖
标题:这个错误如何修改?
只看楼主 加入收藏
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
结帖率:90.38%
收藏
已结贴  问题点数:20 回复次数:2 
这个错误如何修改?
这行显示以下错误:
p->show();

[Error] passing 'const Stock' as 'this' argument of 'void Stock::show()' discards qualifiers [-fpermissive]

代码如下:
程序代码:
#include<iostream>
#include<string>
class Stock{
private:
    std::string co;
    double gat;
    int total;
public:
    Stock(const std::string &s,int i=0,double j=0.0);
    const Stock &val(const Stock &s)const;
    void show();
};
void Stock::show(){
    std::cout<<co<<std::endl<<total<<std::endl<<gat;
}
Stock::Stock(const std::string &s,int i,double j){
    co=s;
    total=i;
    gat=j;
}
const Stock &Stock::val(const Stock &s)const{
    if(s.total>total)
        return s;
        else
        return *this;
}

int main(){
    Stock stock1[4]={
        Stock("skg",4,7.7),
        Stock("skgjg",5,3.9),
        Stock("irgnj",33,5.7),
        Stock("eiur",4,5.7)
    };
    const Stock *p=&stock1[0];
    for(int i=1;i<4;i++){
        p=&p->val(stock1[1]);
    }
    p->show();
    return 0;
}
搜索更多相关主题的帖子: show total int std const 
2021-01-08 18:01
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:20 
void show() const
void Stock::show() const
2021-01-08 19:02
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:0 
当然,整段代码都不是C++风格,这是半路转行C++的C程序员的通病

程序代码:
#include <iostream>
#include <string>

class Stock
{
public:
    explicit Stock( std::string co, int total=0, double gat=0.0 );

private:
    std::string co_;
    int total_;
    double gat_;
    
    friend bool operator<( const Stock& lhs, const Stock& rhs ) noexcept;
    friend std::ostream& operator<<( std::ostream& os, const Stock& s );
};

Stock::Stock( std::string co, int total, double gat ) : co_(std::move(co)), total_(total), gat_(gat)
{
}

bool operator<( const Stock& lhs, const Stock& rhs ) noexcept
{
    return lhs.total_ < rhs.total_;
}

std::ostream& operator<<( std::ostream& os, const Stock& s )
{
    return os << s.co_ << '\n' << s.total_ << '\n' << s.gat_;
}

#include <algorithm>
using namespace std;

int main( void )
{
    Stock s[] = {
        Stock("skg",    4, 7.7),
        Stock("skgjg",  5, 3.9),
        Stock("irgnj", 33, 5.7),
        Stock("eiur",   4, 5.7)
    };
    
    auto itor = max_element( begin(s), end(s) );
    cout << *itor << endl;
}
2021-01-08 19:25
快速回复:这个错误如何修改?
数据加载中...
 
   



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

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