【发布时间】:2016-11-27 09:05:25
【问题描述】:
我有一个学校作业:
我。创建一个价格为 150 美元和 type = “classical” 的古典吉他对象。将新价格设置为 100 美元并显示有关吉他对象的所有信息。
二。创建一个价格为 135 美元的电吉他对象,类型为“electric”。在促销时更改价格并显示有关吉他对象的所有信息。
我正在尝试自己解决它,但我是 C++ 新手,遇到无法理解的编译器错误。
这里是我在 Guitar.h 文件中创建的类。
#pragma once
#include<iostream>
#include <string>
#include<sstream>
using namespace std;
class Guitar
{
private:
string type;
double price;
public:
Guitar(string type, double price);
string getType();
double getPrice();
void setPrice(double newPrice);
void setPrice(bool promotion);
string toString();
};
这是我的 Guitar.cpp 文件中的类实现
#include "Guitar.h"
Guitar::Guitar(string typeclass, double priceclass)
{
type = typeclass;
price = priceclass;
}
string Guitar::getType()
{
return type;
}
double Guitar::getPrice()
{
return price;
}
void Guitar::setPrice(double newPriceclass)
{
price = newPriceclass;
}
void Guitar::setPrice(bool promotion)
{
if (promotion == true)
price *= 0.9;
}
string Guitar::toString()
{
stringstream info;
info << "Guitar Type: " << type << endl
<< "Price: " << price << endl;
return info.str();
}
终于有了我的主文件GuitarApp.cpp
#include"Guitar.h"
int main()
{
Guitar guitar1("Classical", 150.0);
guitar1.setPrice(100) << endl;
cout << guitar1.toString() << endl;
Guitar guitar2("Electrical", 135.0);
guitar2.setPrice(true);
cout << guitar2.toString() << endl;
}
我有 2 个错误:
- 多个重载函数实例
Guitar::setPrice与参数列表匹配
Guitar::setPrice对重载函数的模糊调用。
有人可以向我解释错误以及我应该怎么做才能编译代码吗?
编辑: 将100 更改为100.0 后,我又遇到了4 个错误:
- 形参列表不匹配
- 表达式必须具有整数或无范围枚举类型
- 无法确定函数模板
std::endl的哪个实例;意在
- '
所有错误都在我的 GuitarApp.cpp 的第 7 行,即
guitar1.setprice(100.0)<<endl;
如果我将吉他的价格从100.0 编辑回100,我会得到我最初遇到的两个错误。
【问题讨论】:
-
将 100 更改为 100.0。其他四个错误是什么?
-
您的编译器肯定会告诉错误的行号;你能完成吗?对了,现在少了一个 cout(因为你之前没有 endl 错误)
-
@Christophe 所有错误都在我的 GuitarApp.cpp 的第 7 行,即 guitar1.setprice(100.0)
-
@Kris 添加 cout
-
@kris 第 7 行。如果没有 cout,
标签: c++ class overloading