Я хотел бы сделать метод класса как друга вместо того, чтобы создать весь класс. Вот что у меня естьСоздание методов класса в качестве друга
class tar;
class foo
{
private:
int foo_int;
public:
foo(){std::cout << "Constructor\n";}
friend void tar::anotherMethod();
};
class tar
{
public:
void anotherMethod()
{
foo f;
f.foo_int = 13;
std::cout << f.foo_int;
}
};
Эти ошибки я получаю
error C2027: use of undefined type 'tar'
error C2248: 'foo::foo_int' : cannot access private member declared in class 'foo'
Любые предложения о том, что я могу делать неправильно?
[C2027] (http://msdn.microsoft.com/en-us/library/6c2dk0ah.aspx) : 'Тип не может использоваться до тех пор, пока он не будет определен. Чтобы устранить ошибку, убедитесь, что тип полностью определен, прежде чем ссылаться на него. '. –
Я объявил «класс tar» прототипом. Я не могу понять, почему его не выбрали. – MistyD
Это [ссылка] (https://stackoverflow.com/questions/24095071/incomplete-type-in-nested-name-specifier) объясняет это немного лучше. –