Правило одного класса в заголовке не имеет смысла. Если это не работает:
#include <header1>
#include <header2>
тогда некоторые вариации этой воли:
#include <header1a>
#include <header2>
#include <header1b>
Это может привести к менее одного класса в заголовке, но вы всегда можете использовать (недействительными *) и слепков и встроенные функции (в этом случае «inline», вероятно, будет должным образом проигнорирован компилятором). Таким образом, вопрос, как мне кажется, может быть уменьшены до:
class A
{
// ...
void *pimpl;
}
Возможно ли, что частная реализация, Pimpl, зависит от объявления? Если это так, то pimpl.cpp (как заголовок) должен предшествовать и следовать A.h. Но так как вы всегда можете использовать (void *) и casts и встроенные функции в предыдущих заголовках, это можно сделать.
Конечно, я мог ошибаться. В любом случае: Ick.
Что делать, если библиотека без заголовков A зависит от библиотеки DLL? Или это исключено из последнего предложения? Конечно, вы всегда можете переопределить его как заголовки, так что, возможно, это невозможно. – Skurmedel
вам нужно поговорить с другими языками? – Anycorn
@Skurmedel: C++ не содержит DLL-подобных объектов, поэтому все, что будет реализовано, будет реализовано. Я сомневаюсь, что это имеет какое-то значение. –