My understanding and recollection from when I dinked with graphic programming is the Visitor is indeed appropriate.
Personally, I'd say to just sort the functions in your files intelligently and that will mostly cover it, but that doesn't sound that that's quite what you're looking for.
You could always put the display-related stuff in one class and the non-display stuff in another and use multiple inheritance. Separating GUI stuff from the logic is quite typical thanks to the MVC design pattern. It's often a great way of doing things, but I don't know how well it applies to what you're doing.
Another possibility would be to just put the the function definitions in separate files. There's nothing requiring you to put all of the function definitions for a class all in one file. Instead of Dog.cpp, you could have Dog.cpp which includes Dog_DisplayFunctions.cpp and Dog_ActionFunctions.cpp or something like that.