我有两个课程:company
和cpworker
。
我试图将公司中的向量传递给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
答案 0 :(得分:3)
company
是一个类,除非项目是decalred static,否则如果没有类的实例,则无法访问它。创建实例或使项目成为静态成员。
希望这有帮助。
答案 1 :(得分:0)
无法创建成员函数friend
声明,您可以将全局函数或整个类声明为朋友,另请参阅:C++ ref, Friendship and inheritance。
一般来说,使用朋友并不是一个好的设计理念,因为它强烈地将课程结合在一起。更好的解决方案是耦合接口(无论如何都不需要公开显示)。 在极少数情况下,它可能是一个很好的设计决定,但几乎总是适用于内部细节。