首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c++中使用抽象库

在c++中使用抽象库
EN

Stack Overflow用户
提问于 2013-01-14 10:16:33
回答 1查看 380关注 0票数 0

我有一个抽象的库,基本上看起来像这样:

A.h

代码语言:javascript
复制
namespace N {
    class A
}

B.h

代码语言:javascript
复制
#pragma once
#ifndef B
#define B
#include "A.h" 
namespace N {
    class B: Public A
}
#endif

并且该库在CMakelists.txt中的引用方式如下:

代码语言:javascript
复制
global_add_library(libN A.cpp B.cpp)
target_link_libraries(libN someLibraries)

现在我有了如下所示的main文件:

代码语言:javascript
复制
#include <libN/A.h>
#include <libN/B.h>

N::A a* = new A();
N::B b* = new B();

它的CMakelists.txt看起来像这样:

代码语言:javascript
复制
global_add_exectubale(application somemainccpfiles.cpp)
target_link_libraries(application libN)

我得到的是一个错误,说

代码语言:javascript
复制
error: ISO C++ forbids deceleration of 'B' with no type.

所以我在想B.h文件没有被正确包含吗?但是,为什么A的减速是正常的呢?

有什么想法吗?

编辑:所以我找出了最初的问题是什么,pragma onceifndef的组合意味着它不能正确编译。我在修复后删除了杂注。但现在的问题是为什么会这样呢?难道它不应该同时对两者都起作用吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-14 10:26:37

代码语言:javascript
复制
#include "A.h" 
namespace N {
    class B: Public A
}

您包含的是"A.h“,但在其他文件中是"libN/A.h”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14310574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档