2017-10-06 111 views
0

我通过一些代码去这是一个小联合国举办的参数类型的类。 我想使用一个cpp文件中创建的类作为头文件中的参数类型。我知道这个类需要在标题中定义,但我现在正在寻找一个简短的方法。这是我使用在CPP文件创建为一个头文件

filename: foo.cpp 

class bar { 
} 

现在头

filename: foo.h 

class teacher { 
public: 
    void dosomething(bar b) { ///<-----Incomplete type. 
    b.work(); /// 
    } 
} 

我想声明的标题里面的原型这种方式

class foo; 
class teacher { 
    public: 
     void dosomething(bar b) { 
     b.work(); ///Error no method work for incomplete type. 
     } 
    } 

什么将是除了解决这个问题的最简单方法从bar类移到头文件

+0

“什么是解决这个问题的最简单的方法” - 添加包括在“酒吧”的定义带来。 –

+0

我不确定这是什么意思?我怎么做 ? – Rajeshwar

回答

0

我认为它愿买电子健康l条这样的好:

文件:bar.hh

class bar 
{ 
... 
} 

文件:foo.hh

#include "bar.hh" 
class teacher 
{ 
public: 
    void dosomething(bar b) 
{ 
    b.work(); 
    } 
} 
1

您可以前瞻性声明在头类型bar假设你做什么,依靠它是一个完整的类型。例如,这是不行的:

// foo.hpp 
class bar; 
class teacher { 
public: 
    void dosomething(bar b) { 
    // Will fail, bar is not complete: 
    b.work(); 
    } 
}; 

但这会:

// foo.hpp 
class bar; 
class teacher { 
public: 
    void dosomething(bar b); 
}; 

// foo.cpp 
class bar { 
public: 
    void work() {} 
}; 

void teacher::dosomething(bar b) { 
    b.work(); 
} 

不过,我会建议,而不是创建一个bar.hpp文件与bar类型的定义和#includefoo.hpp

考虑,例如,使得包括foo.hpp任何代码(除其他foo.cpp)将无法调用teacher::dosomething(bar),因为它不会有任何定义bar

+0

是的,我把implimentation转移到一个cpp文件,只是向前宣布的类型 – Rajeshwar