C ++标头文件和类定义问题

时间:2014-07-18 18:35:07

标签: c++

问题:我已经开始了一个类,然后在我的main函数中使用它会抛出未定义的错误。然后我添加了.h文件,它抛出了另一个错误。我的问题是根据.cpp类文件编写.h。以下是详细信息:

我在ElevatorButton.cpp中解析了这个类:

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

class ElevatorButton
{
    public:
        int pressed = 0; // boolean

        void myFunc(int param1)
        {
            cout << param1 << endl;
        }
};

然后我在ElevatorSimulation.cpp中有这个文件:

#include "stdafx.h"
#include <iostream>
#include <string>
#include "Header.h"

using namespace std;



int main()
{
    ElevatorButton ElvBtn;

    cout << ElvBtn.myFunc(1) << endl;
}

定期编译代码会引发错误。我应该像看起来那样声明头文件。但在我的头文件中,我应该如何管理定义?我已经阅读了.h文件,但仍然感到困惑。这是我的header.cpp:

#ifndef ElevatorButton_H
#define ElevatorButton_H

class ElevatorButton
{
public:
    int pressed = 0; // boolean
public:
    void myFunc(int param1){};
};

#endif

但它会引发Header.h的以下错误:

1>ElevatorSimulation.cpp(14): error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'void' (or there is no acceptable conversion)

2 个答案:

答案 0 :(得分:3)

您收到该错误是因为myFunc返回void,所以

cout << ElvBtn.myFunc(1)
当右侧评估为无效时,

没有定义。如果要使用cout打印值,myFunc必须返回可以传递到流中的类型。

问题根本不在于您的类定义,而是在您的主要功能中。

答案 1 :(得分:0)

是header.cpp吗?因为它应该是header.h