出错了,帮忙见见
出错了,帮忙看看
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]; 试一下
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]; 试一下