问题:我已经开始了一个类,然后在我的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)
答案 0 :(得分:3)
您收到该错误是因为myFunc
返回void,所以
cout << ElvBtn.myFunc(1)
当右侧评估为无效时,没有定义。如果要使用cout
打印值,myFunc
必须返回可以传递到流中的类型。
问题根本不在于您的类定义,而是在您的主要功能中。
答案 1 :(得分:0)
是header.cpp吗?因为它应该是header.h