无法使用 "Friend" 到达不同类中的向量

Cannot reach a vector in a differend class using "Friend"

本文关键字:同类 向量 Friend      更新时间:2023-10-16

我有两个班:companycpworker

我试图将公司中的矢量传递给cpworker的函数,尽管当我试图到达矢量时,它不让我:

company类中:

vector<project> projects;
friend void cpworker::registerWork();

cpworker类中:

void cpworker::registerWork()
{   
    for (int i = 0; i < company.projects.size(); i++)
    {
    }
}

正如你所看到的,我试图达到向量的大小,但它不让我…此外,我没有使用get方法来返回项目的大小,因为我需要在循环中完全访问它。

下面是我得到的错误(都在for循环行中):

* left of .projects must have class/struct/union
* left of .size must have class/struct/union
* type name is not allowed

company是一个类,除非项目被声明为静态,否则你不能在没有类实例的情况下访问它。创建实例或使项目成为静态成员。

不可能创建friend声明的成员函数,您可以将全局函数或整个类声明为友元,参见:c++ ref,友谊和继承。

一般来说,使用friend根本不是一个好的设计思想,因为它将类强耦合在一起。更好的解决方案将是耦合接口(无论如何都不需要公开可见)。在少数情况下,这可能是一个好的设计决策,但这几乎总是适用于内部细节。