Here's what I'm trying to do, but VS2008 isn't liking my forward declaration of the class (or friend member function for that matter).

Code:
#include <iostream>


class B;

class A {
public:
     ...
     friend bool B::memberFunc(A a);

private:
     int _a;
};

class B {
public:
     bool memberFunc(A a){
          std::cout<<a._a;
          return true;
     };
};

int main(int argc, char* argv[])
{

	A a;
	B b;

	B.memberFunc(a);


	std::cin.get();

	
	return 0;
}
I've tried both permutations of order to no avail. I'm assuming it's because what I'm trying to do isn't legal. My logic is as follows (I'm hoping someone can provide me with a better solution):

I have class NTS (not threadsafe) which has been implemented previously. Now, the class must be made threadsafe. More specifically, there will be 2 "types" of operations: Updating of the data and rendering of the data. To solve this problem, my solution is to construct a new class TS which possesses two instances of class NTS: _client and _update. Each will do its own thing with periodic syncing of _client's data from _update. I hope to have a member function in TS do this (and be NTS's friend to properly hide the data). Since TS clearly has two instances of NTS as members, one of the classes must be forward declared. Am I doing something syntactically wrong or is there a better paradigm I should be considering?