C++ 无用友元函数声明

标签 c++ oop friend

好吧,我声明了一个友元函数,它在:

// user-proc.h
class cregister{
 private:
  levy user; // typedef struct
  int testp;
 public:
  friend void test();
  cregister(levy &tmp);
  levy getUser();
  void displayUser(levy &);
};

然后我把它定义在:

// user-proc.cpp
void test()
{
    cout << "test" << endl;
}

我正在尝试调用 main 函数,但它给了我 It wasn't declared in this scope。我做了一些研究,但我发现,他们说 friend 类型并不完全是声明,你也必须在类外定义它。我试过了,然后通常错误消失了,但碰巧友元函数无法访问私有(private)成员。

编辑:我使用了 void test();在类定义和使用对象之前访问私有(private)成员。它以这种方式修复。

最佳答案

您需要有两个声明:一个是普通的函数原型(prototype)声明,另一个在类中作为友元声明。


// user-proc.h
void test();  // Added prototype

class cregister{
 private:
  levy user; // typedef struct
  int testp;
 public:
  friend void test();  // Friend declaration still here
  cregister(levy &tmp);
  levy getUser();
  void displayUser(levy &);
};

关于C++ 无用友元函数声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25866082/

相关文章:

java - 无法降低从 Rideable 继承的方法的可见性

C++ 友元类 std::vector

c++ - 无法为命名空间中的私有(private)枚举重载 i/o 运算符

c++ - 在构造函数中调用纯虚函数会报错

PHP:从严重死亡的类中调用私有(private)方法

C++//尝试重写工作代码以包含我的函数

java - 服务器端应用程序中内部类的好处

java - Java的“ friend ”等价物?

c++ - 一种销毁 "thread"类的方法

c++ - 具有相同返回的多个 IF