访问头文件中的预定义对象

时间:2014-11-05 17:32:28

标签: c++

我正在使用一个外部库,它将提供一个类,比如library_class_1,它将像往常一样接受一些输入和返回输出。我希望能够在头文件中访问这些输出,以便在另一个类中使用此信息。 我将此信息传递到单独的头文件时遇到问题。我会发布一个关于脚本的想法,因为它太大了,并且包含了很多关于这个问题的其他非相关信息。

"的main.cpp"

#include header.h
int main {
...
  library_class_1 object_1;

  header object_2;
  object_2.DoSomething(...) // how to input object_1 correctly?
}

" header.h"

class header {

public:
header();
void DoSomething( ); // How can I pass object_1 in here?

} 

" header.cpp"

#include header.h

header::header() {...}
header::DoSomething( ) // How can I pass object_1 in here?
{ 
// Here, I want to be able to access member functions of 
// object_1 
}

如果我宣布

" header.h"

header::DoSomething(library_class_1 & object_1);

" header.cpp"

void DoSomething(library_class_1 & object_1);

我收到错误:还没有声明library_class_1(在" header.h"中)

我相信我必须以某种方式在" header.h"中声明此功能,但我无法这样做。我尝试过定义

class library_class_1;
// or library_class_1 object_1;

在" header.h"中,没有成功。

无论如何,请不要介意格式化/实现错误,因为我只是想知道这个问题。我希望我能正确解释我的问题。

1 个答案:

答案 0 :(得分:0)

  1. 在使用之前在header.h中添加library_class_1的前向声明。

    class library_class_1;
    
    class header {
      public:
        header();
        void DoSomething(library_class_1 const&  object_1);
    } 
    
  2. 确保{header}中的#include .h文件定义library_class_1

    #include <librarry_class_1.h>
    
    void header::DoSomething(library_class_1 & object_1)
    {
        // Use object_1 ...
    }