To clarify a bit:
Fbo uses resources that can potentially become very big. Copying an
Fbo would result in huge memory transfers. Since copying data in C++ can happen at unexpected times (at least for novice users), the Cinder developers wanted to avoid this. There are several ways in which one can do that, for example by using a pointer or reference to an
Fbo. Or using a technique called implicit sharing, where the details of the class are stored in an internal shared pointer, making copies light and fast.
The latter was used until version 0.9.0 came out. It was then decided that it would be better to use explicit shared pointers in combination with a
create factory method. This is what Cinder uses today.
You can not create an
Fbo, because the constructor, copy constructor and assignment operator are protected. This prevents you from writing code that would perform poorly. Instead, you use a shared pointer to an
Fbo, for which Cinder defines an abbreviation:
using FboRef = std::shared_ptr<Fbo>;
And as @lithium.snepo pointed out, you can then use Fbo’s
create method to create one. Your member variable should be of type
Fbo. Same goes for things like