出错了,帮忙见见

出错了,帮忙看看
本帖最后由 Afdadfssff 于 2015-10-07 09:51:23 编辑
const Stock & topval(const Stock & s) const;

const Stock & Stock::topval(const Stock & s) const
{
    if (s.total_val > total_val)
        return s;
    else
        return *this; 
}

上面是函数声明和定义,代码太多不全贴出了,下面是代码

#include <iostream>
#include "stock20.h"

const int STKS = 4;
int main()
{{

    Stock stocks[STKS] = {
        Stock("NanoSmart", 12, 20.0),
        Stock("Boffo Objects", 200, 2.0),
        Stock("Monolithic Obelisks", 130, 3.25),
        Stock("Fleep Enterprises", 60, 6.5)
        };

    std::cout << "Stock holdings:\n";
    int st;
    for (st = 0; st < STKS; st++)
        stocks[st].show();
    const Stock top = stocks[0];
    for (st = 1; st < STKS; st++)
top= top.topval(stocks[st]);///提示这句话出错了
    std::cout << "\nMost valuable holding:\n";
top->show();}
    return 0; 
}
再下面是错误提示,问下问题出在哪?应该怎么改能编译通过?
1>d:\my documents\visual studio 2010\projects\news\news\1.cpp(24): error C2678: 二进制“=”: 没有找到接受“const Stock”类型的左操作数的运算符(或没有可接受的转换)
1>          d:\my documents\visual studio 2010\projects\news\news\stock20.h(23): 可能是“Stock &Stock::operator =(const Stock &)”
1>          尝试匹配参数列表“(const Stock, const Stock)”时
1>d:\my documents\visual studio 2010\projects\news\news\1.cpp(27): error C2819: “Stock”类型没有重载成员“operator ->”
1>          d:\my documents\visual studio 2010\projects\news\news\stock20.h(7) : 参见“Stock”的声明
1>          是否改用“.”?
1>d:\my documents\visual studio 2010\projects\news\news\1.cpp(27): error C2232: “->Stock::show”: 左操作数有“class”类型,使用“.”

------解决思路----------------------
top定义为const,不能理发,在定义时把const去掉试试
------解决思路----------------------
const Stock top = stocks[0];  //改为Stock top = stocks[0];  试一下