如何在不同的文件头上添加类朋友?

问题描述 投票:0回答:1

我的班级Bloque是我的其他类用户的朋友,我想将我的用户类的int y传递给我的Bloque类上的一个名为void colision()的函数。

所以我尝试了这个:

# user.h #

class user
{
    private:
        int y;
    friend class Bloque;
};

# bloque.h #

class user;
class Bloque
{
    public:
        void mover();
        void colision(user& f);
};

# bloque.cpp # 

#include "user.h"
#include "bloque.h"
#include <iostream>

void Bloque::mover(){ colision(user& f); }

void Bloque::colision(user& f){ cout << f.y; }

当我尝试编译它时,我得到两个错误:

In member function 'void Bloque::mover()':
bloque.cpp [Error] expected primary-expression before '&' token
bloque.cpp [Error] 'f' was not declared in this scope
Makefile.win    recipe for target 'bloque.o' failed```
c++ friend
1个回答
1
投票

你的forward declaration看起来是正确的。

问题出在这一行:

void Bloque::mover() { 
   colision(user& f); 
}

你的变量f不存在。我不明白你想要做什么。如果您打算使用Bloque::colision类型的变量调用user,您应该首先声明它:

void Bloque::mover() { 
   user us;
   colision(us); 
}
© www.soinside.com 2019 - 2024. All rights reserved.