I've run into a small problem regarding polymorphism. I have a base class named TTT (tic tac toe), I then have 2 derived classes, OnlineGame, and OfflineGame. At the beginning of the program I make a pointer to TTT, then make it a new OnlineGame or OfflineGame depending on user input. My problem is that OnlineGame will need a function to accept the opponent's IP address. I made said function virtual, but now it's requiring me to declare it inside OfflineGame which is illogical to my design. Is there a better way to do this, or am I stuck defining a SetIPAddress for both classes?

This is my current code. It works, but I don't like it.
Code:
class TTT
{
public:
	TTT();
	void GetUserMove();
	bool GameOver();
	virtual void SetIPAddress(string &addr) = 0;
	virtual void GetOpponentMove();
};

class OnlineGame : public TTT
{
public:
	OnlineGame();
	void SetIPAddress(string &addr);
	void GetOpponentMove();
};

class OfflineGame : public TTT
{
public:
	OfflineGame();
	void SetIPAddress(string &addr);
	void GetOpponentMove();
};