여기는 pimpl에 대해 unique_ptr을 사용하려고 시도하는 것을 단순화 한 것입니다. 나는 클래스가 정말로 포인터를 소유하기를 원하기 때문에 unique_ptr을 선택했다 - 나는 pimpl 포인터와 클래스의 수명을 같게하고 싶다. 여기 #ifndef HELP
#define HELP 1
#include <memory>
class Help
기본적으로 제안서를 구현했습니다. 제 질문은 완료 되었습니까? 그렇다면 어디에서? 그리고/또는 내가하는 일을하는 더 좋은 방법이 있습니까? 이 게시물의 길이에 대해 유감스럽게 생각합니다. 코드 제공 이외의 방법을 설명하는 더 좋은 방법을 알지 못했습니다. 나는 이전에 기본적으로, 우리는 인터페이스 interface 및 구현 impl있어 말할 수, 여기서 다
나는 핌플 패턴을 사용하고 익명 네임 스페이스에서 구현 클래스를 정의하려고합니다. C++에서도 가능합니까? 실패한 시도는 아래에 설명되어 있습니다. 구현을 이름 (또는 전역 이름)이있는 네임 스페이스로 이동하지 않고이 문제를 해결할 수 있습니까? class MyCalculatorImplementation;
class MyCalculator
{
pub
의 간단한 형태는 왜이 디자인 선택하지 : 대신 // A.hpp
class A
{
public:
void do_something();
};
// A.cpp
#include "A.hpp"
#include <vector>
std::vector<int> impl_database_for_do_something;
static void
boost :: shared_ptr는 정말 저를 괴롭 힙니다. 확실히, 나는 그러한 일의 유용성을 이해하지만 나는 shared_ptr<A>을으로 A*으로 사용할 수 있기를 바란다. 다음 코드를 고려하십시오. class A
{
public:
A() {}
A(int x) {mX = x;}
virtual void setX(int x
pimpl 관용구를 사용할 때 모든 메서드 정의를 클래스 정의 안에 넣는 것이 좋은 생각입니까? // in A.h
class A {
class impl;
boost::scoped_ptr<impl> pimpl;
public:
A();
int foo();
}
// in A.cpp
class A::impl {
d- 포인터는 Qt에서 많이 사용되며 pimpl 관용구를 구현 한 것입니다. 나는 pimpl 관용구의 장단점을 안다. 그러나 나는 d- 포인터 구현의 장점을 놓쳤다. Here 및 here은 d- 포인터의 샘플입니다. 이것을 사용하는 것이 더 쉽지 않습니까? class MyClassPrivate;
class MyClass {
// interface