-1

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

4

2 回答 2

3

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

希望这可以帮助。

于 2012-12-27T14:50:19.523 回答
0

不可能创建成员函数friend声明,您可以将全局函数或整个类声明为朋友,另请参阅:C++ ref、友谊和继承

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

于 2012-12-27T15:24:18.507 回答