我正在尝试使用私有类中的变量,并在不同时间添加和减去它,首先向其中添加5次5次,然后从中减去5次5次,每次我必须显示其值。目前我有:
#include "stdafx.h"
#include <iomanip>
#include <iostream>
#include <string>
using namespace std;
class car {
private:
int year;
string make;
int speed;
public:
void StoreInfo(int y, string m, int s);
int getSpeed() { return speed; }
int accelerate() { speed += 5; }
int brake() { speed -= 5; }
};
void car::StoreInfo(int y, string m, int s) {
year = y;
make = m;
speed = s;
}
car fillFields() {
car Filler;
int year; // Local variables to hold user input
string make;
int speed = 0;
// Get the data from the user
cout << "Enter year: ";
cin >> year;
cout << "Enter make: ";
cin.get(); // Move past the '\n' left in the
// input buffer by the last input
getline(cin, make);
cout << "The current speed is " << speed << endl;
Filler.StoreInfo(year, make, speed);
return Filler;
}
int main() {
car numbers = fillFields();
car::accelerate();
return 0;
}
此代码接受输入,但在此之后无法工作我发现main中的car :: accelerate()行现在不正确但我将如何正确使用它?
答案 0 :(得分:2)
首先accelerate
和brake
不会返回任何值,因此您可以void
void accelerate() { speed += 5; }
void brake() { speed -= 5; }
accelerate
是非静态成员函数,需要一个对象,因此您需要调用它:
numbers.accelerate();
例如,将您的main
函数更改为accerelate
一次,然后brake
,并查看速度:
int main() {
car numbers = fillFields();
numbers.accelerate(); // +5
cout << "The current speed is " << numbers.getSpeed() << endl;
numbers.brake(); // -5
cout << "The current speed is " << numbers.getSpeed() << endl;
return 0;
}
输出:
输入年份:输入make:当前速度为0
目前的速度为5
当前速度为0
您可以使用构造函数替换car::StoreInfo
,因为它执行构造函数的用途。并且不要忘记初始化变量。
答案 1 :(得分:0)
numbers.accelerate();
您没有使用任何静态数据。如果需要,可以重命名数字变量。