我正在浏览一些有点无组织的代码。 我想在其头文件中使用在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 :(得分:1)
您可以在标头中转发声明类型#include "bar.hh"
class teacher
{
public:
void dosomething(bar b)
{
b.work();
}
}
,假设您不依赖于它是完整类型。例如,这不起作用:
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
将其定义为#include
。
例如,考虑包含foo.hpp
的任何代码({1}}除外)将无法调用foo.cpp
,因为它没有{{1}的任何定义}}
答案 1 :(得分:0)
我认为这样会更好:
"0.0.0.0"
class bar
{
...
}