Czy to jakoś możliwe, aby wykonać następujące czynności:Ukryj realizacja za pomocą wskaźnika (Pimpl idiom)
x.hpp - plik ten zawiera wiele innych klas
class x_impl; //forward declare
class x {
public:
//methods...
private:
x_impl* impl_;
};
x .cpp - realizacja
#include <conrete_x>
typedef concrete_x x_impl; //obviously this doesn't work
//implementation of methods...
Więc zasadniczo chcę użytkownikom dołączyć plik x.hpp, ale nie zdawaj sobie sprawy z nagłówka conrete_x.hpp.
Ponieważ mogę używać concrete_x
tylko przez wskaźnik i pojawia się tylko jako prywatny element danych, deklaracja przekazania powinna wystarczyć kompilatorowi, aby wiedzieć, ile miejsca na przygotowanie się do niego. Wygląda całkiem podobnie do dobrze znanego "idiomu pimpl".
Czy możesz mi w tym pomóc?
PS. Nie chcę używać void*
i rzutować go wokół ..
dlaczego nie możesz mieć concrete_x dziedziczą z x_impl? – StoryTeller
Jaki jest dokładnie twój problem? – Grizzly
Dlaczego nie chcesz zdefiniować samej klasy "class x_impl" w? –