This one is more related to C++ language rather than Juce. I am not able to resolve the ambiguity in this case:
class Timer
{
public:
void startTimer(int) {}
};
class B : public Timer
{
public:
...
};
class C : public B, public Timer
{
void cfunc(void)
{
B::startTimer( 30 );
A::startTimer( 50 );
}
};
B::startTimer( 30 ) is resolved neatly, but the compiler is noat able to resolve A::starTimer( 50 ).
Also have a look at Button::RepeatTimer, or MouseDragAutoRepeater, JucerTreeViewBase::ItemSelectionTimer etc.
With C++11 this stuff will all be avoidable by using lambdas, but until then I think the trick is just to avoid complicated inheritance patterns unless it's genuinely essential (which is rare).