使用“朋友”无法在不同的班级中找到矢量

时间:2012-12-27 14:38:41

标签: c++

我有两个课程: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

2 个答案:

答案 0 :(得分:3)

company是一个类,除非项目是decalred static,否则如果没有类的实例,则无法访问它。创建实例或使项目成为静态成员。

希望这有帮助。

答案 1 :(得分:0)

无法创建成员函数friend声明,您可以将全局函数或整个类声明为朋友,另请参阅:C++ ref, Friendship and inheritance

一般来说,使用朋友并不是一个好的设计理念,因为它强烈地将课程结合在一起。更好的解决方案是耦合接口(无论如何都不需要公开显示)。 在极少数情况下,它可能是一个很好的设计决定,但几乎总是适用于内部细节。