From an OO point-of-view, that is exactly the way that should
be designed. Just as a heads-up, though... for some reason in CF6/7
object instantiation is a bit time consuming... 16-32ms apiece. If
you're trying to invoke an album component which then invokes 20
track components, you're looking at somewhere between 300 and 700
ms, which may produce a somewhat laggy page. Some work has been
done to correct this in the next release of CF, due out later this
year.
As far as your error, it seems probable that the problem
would be that arguments.bean.gettracks() returns a string. Check
the returntype of the function and if that doesnt work, try setting
that variable into an intermediate value first... i've had some
issues trying to use the results of a function call
directly.