调用C ++中的类中另一个头文件中定义的函数

时间:2015-01-22 13:59:09

标签: c++ include header-files

我试图在一个类中使用shiftreg.h和一个shiftreg.cpp(我以前在我的主文件中成功使用)并调用他的一个函数。可悲的是没有编译并给出错误:' shiftWrite'未在此范围内声明。我想我将每个头文件都包含在其他内容中,并且应该找到彼此。出了什么问题?

这是shiftreg.h:

#ifndef shiftreg_h
#define shiftreg_h

void shiftWrite(uint8_t data);

#endif

这个shiftreg.cpp:

#include "ShiftReg.h"

void shiftWrite(uint8_t data) {
    do something;}

函数shiftWrite,我想在SegmentDisplay类的函数中使用,如下所示,使用SegmentDisplay.h

#ifndef SegmentDisplay_h
#define SegmentDisplay_h

#include <ShiftReg/shiftReg.h>

class SegmentDisplay{
public:
    void pickNumber(int x);
};

#endif

SegmentDispplay.cpp:

#include "SegmentDisplay.h"

void SegmentDisplay::pickNumber(int x){
    shiftWrite(ONE);}

这一切都始于Arduino软件:

  #include "SegShift.h"

  SegmentDisplay dsp();

  int main(void){
      while(1){
          dsp.pickNumber(j);}}

3 个答案:

答案 0 :(得分:0)

您似乎包含两个不同的文件:

在ShiftReg.cpp中,您可以:#include "ShiftReg.h"

在SegmentDisplay.h中,您执行#include <ShiftReg/shiftReg.h>

(顺便说一句,我只是在你的SegmentDisplay.cpp中包含shiftreg.h。)

答案 1 :(得分:0)

我已将ShiftReg.h和ShiftReg.cpp文件添加到SegmentDisplay文件的文件夹中并进行编译!我很高兴我也借助你的答案解决了这个问题。

但是,我想知道为什么我们在不同文件夹中时无法使用这些文件。有什么想法吗?

答案 2 :(得分:-1)

在SegmentDisplay.h中,您必须包含shiftreg.cpp而不是shiftreg.h

否则代码不会看到该功能