我对 C++(但不是 C 或 OOP)相当陌生,但我正在尝试以“正确”的方式做事并避免任何不良和/或危险的习惯,因此我使用 Google 的 C++ 编码指南和有效的 C++ 作为我学习的起点。
我有一个unique_ptr
作为成员的抽象基类。如果我将其设为私有并且仅通过 getter 提供对派生类的访问(根据 Google C++ 样式指南),这是最好的方法吗?还是我在这里错过了一个潜在的陷阱?
基数.h:
#include "Document.h"
typedef std::unique_ptr<Document> pDOC;
class Base {
public:
Base();
virtual ~Base() = 0;
pDOC& GetDoc();
private:
// Unique pointers cannot be shared, so don't allow copying
Base(Base const &); // not supported
Base &operator=(Base const &); // not supported
pDOC m_doc;
};
基数.cpp
#include "base.h"
Base::Base()
: m_xmldoc(new Document) {}
// Class destructor (no need to delete m_doc since it is a smart pointer)
Base::~Base() {}
pDOC& Base::GetDoc() {
return m_doc;
}