调用方法时使用C ++ Cout。不知道自己在做什么错

时间:2019-06-25 06:14:06

标签: c++ class

我是编码的新手,我只是在玩C ++尝试学习类而不是其他。这是下面的代码,我不知道为什么它不起作用。

我已经Google搜索了一段时间,找不到任何东西。

main.cpp

#include "Vehicle.cpp"
#include <iostream>
using namespace std;

int main() {

    Vehicle myVehicle();

    cout << myVehicle.testCout();
}

Vehicle.cpp

#include <iostream>
#include <string>
#include "Engine.cpp"
#include "Body.cpp"
#include "Rims.cpp"

using namespace std;

class Vehicle {

    Vehicle() {
        Engine engine(4, 1.6, "i4");
        Body body("black", 4);
        Rims rims(16);
    }

    void testCout() {
        cout << engine.getCylinders();
    }
};

main.cpp: E0153表达式必须具有类类型ObjectStuff

Vehicle.cpp: E0020标识符“ engine”未定义

2 个答案:

答案 0 :(得分:3)

class Vehicle {

    Vehicle() {
        Engine engine(4, 1.6, "i4");
        Body body("black", 4);
        Rims rims(16);
    }

    void testCout() {
        cout << engine.getCylinders();
    }
};

问题是您的实例变量不存在。您的构造函数创建了一些变量,但在ctor结束后将其删除。您需要将它们保存在班级中。

class Vehicle {
    Engine engine;
    Body body;
    Rims rims;

    public: // And you need to declare the stuff public that you want public
    Vehicle() {
        engine = Engine(4, 1.6, "i4");
        body = Body("black", 4);
        rims = Rims(16);
    }

    void testCout() {
        cout << engine.getCylinders();
    }
};

答案 1 :(得分:0)

我不知道您是否发布了实际代码的混搭,但我看不到如何在课堂外调用私人成员。

为什么要包含.cpp文件?

Vehicle.cpp: E0020 identifier "engine" is undefined

上述错误是因为编译器找不到Engine类的声明。同样,对于您要创建的其他对象。