A diferença entre o predicativo do complemento directo e o atributo é que o primeiro faz parte dos complementos do verbo, isto é, trata-se de uma palavra ou uma expressão que qualifica e completa o complemento ao qual se junta, por exigência do verbo (a); já o atributo, que faz parte dos complementos do nome, é um adjectivo que se junta a um nome para o qualificar, não sendo exigido pelo verbo (b). No exemplo por si apresentado, fantástica tem a função de atributo.
(a)
O João tinha as mãos frias.
? O João tinha as mãos.
(b)
O Zé contou uma história fantástica.
O Zé contou uma história.