【发布时间】:2018-12-20 20:50:12
【问题描述】:
我目前正在编写一个有时会与 OpenCV 一起使用的库。因为 OpenCV 定义了一个 Point_ 类,该类在我的库将在其中使用的某些上下文中常用,所以我想添加选项以将 Point_s 作为参数传递给我的某些函数。也就是说,OpenCV 是一个非常重的库,我非常不想仅仅为了访问它的 Point_ 类而依赖它。
定义我自己的 Point_ 相同的 Point_ 类会导致预期的多重定义错误。
我考虑使用预处理器宏来检查是否已包含包含 Point_ 的 OpenCV 标头,如果尚未包含则仅定义它,但我担心如果首先包含我的库标头,则多重定义错误将返回,这将使我的库难以为我以外的任何人使用。
有没有一种方法可以提供仅在其他任何地方没有定义时才使用的定义,和/或如果确实出现在其他地方时将被覆盖?
【问题讨论】:
标签: c++ dependencies shared-libraries multiple-definition-error