次のレイアウトを持つ、自分のものではないコードベースに取り組んでいます。
object.h:
// Objects are defined
// #include "tickets.h" (functions to access the objects)
// An access-handler object is defined
オブジェクトを認識し、tickets.h の関数からアクセスできるクラスを導入したいと思いますが、アクセス ハンドラ オブジェクトも使用できます。関数は分離されています。つまり、tickets.h で呼び出されるクラス関数はアクセス ハンドラを使用しません (そうでなければ、どこから始めればよいかわかりません)。
したがって、私のクラスは ticket.h の前に定義する必要がありますが、その関数の一部は access-handler の後に定義する必要があります。次のような 2 つのヘッダー ファイルに分割せずにこれを行う方法はありますか。
// Objects are defined
// -- include declaration of class, and definition of functions that tickets.h needs
// #include "tickets.h"
// An access-handler object is defined
// -- include functions of class that need the access-handler
このようなものを 2 つの別々のファイルに分割するのは非常に面倒に思えます。
助けてくれてありがとう、私は明らかにC ++の宣言/定義について非常に初歩的な理解しか持っていません。
編集:前方宣言を使用して、(mynewclass.h で宣言されたクラスと mynewclass.cc で定義された関数を使用して) ticket.h の前に含めると、mynewclass.cc は mynewclass.h を含めた後に宣言されたオブジェクトを使用できますか? つまり、アクセス ハンドラ オブジェクトです。
EDIT2:このようなもの:
object.h:
class obj { // definition }
#include "tickets.h"
class obj_handler {
public void handle { // code }
}
ticket.h:
void do_something(obj o){
communicator.foo();
}
私のオブジェクト(コミュニケーター):
class communicator {
public:
void foo() { // code }
void bar() { // use handle() from obj_handler }
}
ご覧のとおり、私のコミュニケーターは ticket.h で使用する必要がありますが、obj_handler の後まで定義できません。では、どこに含める必要がありますか?