C ++类使用私有类的变量

时间:2018-02-20 16:09:03

标签: c++ function class

我正在尝试使用私有类中的变量,并在不同时间添加和减去它,首先向其中添加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()行现在不正确但我将如何正确使用它?

2 个答案:

答案 0 :(得分:2)

首先acceleratebrake不会返回任何值,因此您可以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

Demo

您可以使用构造函数替换car::StoreInfo,因为它执行构造函数的用途。并且不要忘记初始化变量。

答案 1 :(得分:0)

numbers.accelerate();

您没有使用任何静态数据。如果需要,可以重命名数字变量。