抽象化され、基本的に次のようなライブラリがあります。
ああ
namespace N {
class A
}
Bh
#pragma once
#ifndef B
#define B
#include "A.h"
namespace N {
class B: Public A
}
#endif
そして、ライブラリは次のようにCMakelists.txtで参照されます。
global_add_library(libN A.cpp B.cpp)
target_link_libraries(libN someLibraries)
これで、main
次のようなファイルができました。
#include <libN/A.h>
#include <libN/B.h>
N::A a* = new A();
N::B b* = new B();
そしてそれCMakelists.txt
はこのように見えます:
global_add_exectubale(application somemainccpfiles.cpp)
target_link_libraries(application libN)
私が得ているのは、
error: ISO C++ forbids deceleration of 'B' with no type.
だから私はBhファイルが正しく含まれていないと思っていますか?しかし、なぜ減速がA
うまくいくのですか?
何か案は?
編集:それで、元の問題が何であるか、との組み合わせがpragma once
正しくifndef
コンパイルされていないことを意味していることがわかりました。それが修正されたら、私がプラグマを削除したとき。しかし今、問題はそれがなぜなのかということです。両方でもうまくいくはずだったのでしょうか?