C++ 使用在cpp文件中创建的类作为头文件中的参数类型
我正在浏览一些代码,这些代码有点没有条理。 我想使用在cpp文件中创建的类作为其头文件中的参数类型。我知道这个类需要在标题中定义,但我现在正在这里寻找一个简短的方法。这就是我所拥有的C++ 使用在cpp文件中创建的类作为头文件中的参数类型,c++,C++,我正在浏览一些代码,这些代码有点没有条理。 我想使用在cpp文件中创建的类作为其头文件中的参数类型。我知道这个类需要在标题中定义,但我现在正在这里寻找一个简短的方法。这就是我所拥有的 filename: foo.cpp class bar { } 现在是标题 filename: foo.h class teacher { public: void dosomething(bar b) { ///<-----Incomplete type. b.work();
filename: foo.cpp
class bar {
}
现在是标题
filename: foo.h
class teacher {
public:
void dosomething(bar b) { ///<-----Incomplete type.
b.work(); ///
}
}
除了将
条
类移动到头文件之外,解决此问题的最简单方法是什么
文件:bar.hh
文件:foo.hh
假设您不做任何依赖于它是一个完整类型的事情,您可以在标题中向前声明类型
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
类型定义的bar.hpp
文件,并将其包含到foo.hpp
中
例如,考虑任何包含
foo.hpp
的代码(除了foo.cpp
)都将无法调用teacher::dosomething(bar)
,因为它不会对bar
有任何定义“解决此问题的最简单方法是什么”-添加一个包含“bar”定义的包含项1.我不知道那是什么意思?我该怎么做呢?是的,我把实现移到了一个cpp文件中,只是向前声明了类型
#include "bar.hh"
class teacher
{
public:
void dosomething(bar b)
{
b.work();
}
}
// 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();
}