变量或字段声明为void C ++

时间:2018-02-17 19:41:13

标签: c++

我正在完成学校作业,但我收到了一个奇怪的错误。我试图谷歌,但没有任何帮助。

所以我有一个名为main.cpp的文件。在这个文件中我有一些包含和代码。

此:

#include <iostream>
#include <stdexcept>
#include <string>
using namespace std;

#include "RentalAdministration.h"
#include "Limousine.h"
#include "Sedan.h"


void addTestDataToAdministration(RentalAdministration* administration)
{
    string licencePlates[] = {"SD-001", "SD-002", "SD-003", "SD-004", "LM-001", "LM-002"};

    for (int i = 0; i < 4; i++)
    {
        Car* sedan = new Sedan("BMW", "535d", 2012 + i, licencePlates[i], false);
        administration->Add(sedan);
    }
    for (int i = 4; i < 6; i++)
    {
        Car* limousine = new Limousine("Rolls Roys", "Phantom Extended Wheelbase", 2015, licencePlates[i], true);
        administration->Add(limousine);
    }
}

int main( void )
{  
    RentalAdministration administration;
    addTestDataToAdministration(&administration);
}

所以编译器告诉我变量:“RentalAdministration administration”不存在。

所以,如果我们查看了我的rentaladministration标题。我们看到了这个:

#ifndef RENTALADMINISTRATION_H
#define RENTALADMINISTRATION_H

#include <vector>
#include "car.h"


class RentalAdministration
{
private:
std::vector<Car*> Cars;
Car* FindCar(std::string licencePlate);
Car* FindCarWithException(std::string licencePlate);

public:
std::vector<Car*> GetCars() const {return Cars;}

bool Add(Car* car);
bool RentCar(std::string licencePlate);
double ReturnCar(std::string licencePlate, int kilometers);
void CleanCar(std::string licencePlate);



RentalAdministration();
~RentalAdministration();
};
#endif

这是确切的错误:

src/main.cpp:18:34: error: variable or field ‘addTestDataToAdministration’ declared void
 void addTestDataToAdministration(RentalAdministration* administration)
                                  ^
src/main.cpp:18:34: error: ‘RentalAdministration’ was not declared in this scope
src/main.cpp:18:56: error: ‘administration’ was not declared in this scope
 void addTestDataToAdministration(RentalAdministration* administration)

帮助将不胜感激!

编辑:

我在Sedl和Limousine标题的崇高中收到警告。与某些静态常量有关的东西。我认为它被称为GNU扩展。也许它与它有关。

即使我评论该功能的调用。我犯了同样的错误。 我在其他任何地方都没有这个功能。 有人说原因可能在这些标题中:

#ifndef LIMOUSINE_H
#define LIMOUSINE_H

#include "Car.h"
//c


class Limousine : public Car
{
private:
    bool needsCleaning;
    bool hasMiniBar;
    static const double priceperkm = 2.5;

public:
    double Return(int kilometers);
    void Clean();

    bool GetHasMiniBar() const { return hasMiniBar;}
    void SetHasMiniBar(bool value) {hasMiniBar = value;}

    Limousine(std::string manufacturer, std::string model, int buildYear, std::string licencePlate, bool hasminiBar);

    ~Limousine();

};
#endif 

2:

#ifndef SEDAN_H
#define SEDAN_H

#include "Car.h"
//c



class Sedan : public Car
{

private: 
    int lastCleanedAtKm;
    bool hasTowBar;
    bool needsCleaning;
    static const double priceperKm = 0.29;
public:
    void Clean();

    int GetLastCleanedAtKm() const {return lastCleanedAtKm;}
    void SetLastCleanedAtKm(bool value){ lastCleanedAtKm = value;}

    bool GetHasTowBar() const {return hasTowBar;}
    void SetHasTowBar(bool value) {hasTowBar = value;}

    bool GetNeedsCleaning() const {return needsCleaning;}
    void SetNeedsCleaning(bool value){needsCleaning = value;}


    Sedan(std::string manufacturer, std::string model, int buildYear, std::string licencePlate, bool hastowBar);
    ~Sedan();

};
#endif

2 个答案:

答案 0 :(得分:1)

class Limousine : public Car
{
private:
    static const double priceperkm = 2.5;
    ...
}

删除static并将该成员简单地声明为const double,例如:

class Limousine : public Car
{
private:
    const double priceperkm = 2.5;
    ...
}

错误消息‘RentalAdministration’ was not declared in this scope表示未包含RentalAdministration的正确头文件。检查文件名以确保RentalAdministration的类声明位于正确的文件中。

答案 1 :(得分:0)

重启终端已经以某种方式解决了这个错误。这次我又收到了一个错误,我已经解决了。我错过了析构函数。它位于头文件中,但不在cpp文件中。

越野车终端......