在c++中使用抽象库
Using abstract library in c++
我有一个抽象的库,基本上看起来像这样:
A.h
namespace N {
class A
}
B.h
#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.
所以我认为B.h文件没有正确包含?但为什么A
的减速刚刚好呢?
有什么想法吗?
编辑:所以我发现了最初的问题是什么,pragma once
和ifndef
的组合意味着它没有正确编译。当我在修复后删除杂注时。但现在的问题是,为什么会这样?它不应该对两者都有效吗?
#include "A.h"
namespace N {
class B: Public A
}
您包含了"A.h",但在其他文件中是"libN/A.h">
相关文章:
- 无法创建抽象类的实例
- 如何定义一个纯抽象基类
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 用pybind11包装C++抽象类时出错
- 如何处理从一个对象传递到另一个在C++中具有公共抽象类的对象的消息
- 有没有办法按值将纯抽象类的所有子类传递给 C++ 中的函数?
- 抽象类错误,请参阅声明" "是抽象的
- 将自定义函数传递到基抽象类中以延迟执行
- 命名参数习惯用法和(抽象)基类
- 打印抽象对象 c++
- 如何在从抽象基派生的类中实现相同的方法?
- 将包含抽象类和普通类C++包导出到 Python
- C++:处理抽象类中的错误时出现问题
- C ++如何在原始抽象类中创建一个函数,该函数接受派生类的输入
- C++抽象的字节序是中立的吗?
- 在 C++ 中使用另一个头文件中的抽象类
- ATL::CComContainedObject<contained>: C2259 无法实例化抽象类
- C++:从抽象类重写纯虚拟运算符重载
- 让编译器告诉什么确切的纯虚拟方法使结构抽象?
- 位集元素迭代的抽象