Object composition (class uses class)
error: class 'TriangleButton' does not have any field named '_tft'

This should be self-explanatory. When you write in the constructor

_tft(tft)


It means “initialize the property _tft of this object with the
parameter tft.
It is not very clear what you mean by “object composition”. In the usual
sense, it means that object A either is or has an object B. In your
case, it seems like you want your TriangleButton to hold a reference
to an Adafruit_TFTLCD. This is not really composition, as your class
neither is nor has an LCD.
As an immediate solution, just add an appropriate data member to the
class:
Adafruit_TFTLCD &amp;_ftf;

Assuming that holding a reference to the LCD is really what you want for
your class, this should be enough to solve your issue.

Edit: To answer the edited question.
“Redefinition” means you are defining again something that has already
been defined before. In this case, the constructor is defined inline in
the header file:
TriangleButton(Adafruit_TFTLCD &amp;tft,
        int16_t coordX, int16_t coordY,
        int16_t orientation, uint16_t size, uint16_t color)
    : _tft(tft){}

(yes, that's a complete definition with an empty body).
And then you try to define it again in the cpp file. This is an error,
every method should be defined only once. At your choosing, it can be
either inline in the header or in the .cpp, but not both.