我一直在开发一个库,现在我认为它已经准备好了,我正在尝试遵循pimpl 原则以隐藏实现细节。
// File Class.h
class Class {
public:
Class();
private:
class ClassImpl;
ClassImpl* rep;
};
// File Class.cpp
#include "Class.h"
#include "ClassImpl.h"
Class::Class() {
rep = new ClassImpl();
}
实现类在另一个文件中定义如下
// File ClassImpl.h
#include "Class.h"
class Class::ClassImpl {
public:
ClassImpl();
};
及其实现:
// File ClassImpl.cpp
#include "ClassImpl.h"
#include <iostream>
using C = Class::ClassImpl; // error: 'class Class::ClassImpl' is private
C::ClassImpl() {
std::cout << "Implementation constructor";
}
主功能:
// File main.cpp
#include "Class.h"
int main() {
Class c;
return 0;
}
这样做,编译器error: 'class Class::ClassImpl' is private
会在ClassImpl.cpp
. 如果我将其删除并Class::ClassImpl
改用,一切正常。
有没有办法using
在私有嵌套类上使用ClassImpl
?