函数未在作用域中声明/如何将header.h,header.cpp和main.cpp一起使用?

时间:2018-09-30 17:48:46

标签: c++ oop function-call

我是C ++的入门者,我无法在header.h文件中声明,在header.cpp中定义并在main.cpp中调用函数。我一直在寻找解决方案,但我似乎无济于事。对于如何解决这些问题,我将不胜感激。

这是我的代码:

main.cpp

#include <iostream>
#include "DLinkedList.h"

int main() {
  getInfo(); //Running my function getInfo
}

DLinkedList.h

#ifndef DLINKEDLIST_H
#define DLINKEDLIST_H

class Node
{
  private:
      int info;

  public:
       Node* prev;
       Node* next;
       int getInfo(); //Declaring my function getInfo
       void setInfo(int value); 
};
#endif

DLinkedList.cpp

#include <iostream>
#include "DLinkedList.h"

int getInfo() { //Defining my function getInfo
  int answer;
  std::cout << "Input the integer you want to store in the node: ";
  std::cin >> answer;
  return answer;
}

错误消息:

exit status 1
main.cpp: In function 'int main()':
main.cpp:6:3: error: 'getInfo' was not declared in this scope
   getInfo();
   ^~~~~~~

1 个答案:

答案 0 :(得分:4)

getInfo()不是免费功能。它是类Node的成员函数。因此,需要使用作用域解析运算符(例如::

int Node::getInfo()
{
    // ... body ...
}

并且,在您的main函数中,需要在使用类的成员函数之前创建该类的对象。

例如:

int main()
{
    Node node;
    node.getInfo();
    return 0;
}

最好在编写代码之前修改OOP概念及其在C ++中的实现方式。自由函数和成员函数是不同的东西。读一本合适的书(或教程等)将帮助您为编写OOP代码奠定基础。祝你好运!