私は、「bh」などutil.h
で使用される関数を含み、互いに定義されたいくつかのクラスにアクセスするために互いにインクルードします。a.h
a.h
b.h
//util.h
#ifndef _UTIL_H_
#define _UTIL_H_
#include <iostream>
void foo()
{
std::cout << "foo\n";
}
#endif
//a.h, it has a a.cpp
#ifndef _A_H_
#define _A_H_
#include "util.h"
#include "b.h"
//some classes' definition
#endif
//b.h, it has a b.cpp
#ifndef _B_H_
#define _B_H_
#include "util.h"
#include "a.h"
//some classes' definition
#endif
私の問題は、 のmultiple definition
エラーが発生したことですfoo
。どのように?
a.h
問題は、 includesutil.h
とb.h
、 and b.h
includesutil.h
がもう一度あることだと思ったので、複数の def エラーが発生しました。しかし、私はガードutil.h
を書いたので、それは意味をなさないようです.#ifndef/#define
誰でも私を助けてくれます、ありがとう。