我有两个类别Term和Polynomial。多项式类声明为Term类的朋友。多项式类具有朋友功能。当我在多项式类的cpp文件中实现该功能时,Term的私有成员无法在那里访问。尽管多项式类被声明为它的朋友。我需要做的就是在该函数中访问Term的私有成员。有什么帮助吗?这是我的代码:
Polynomial.h文件:
#pragma once
#include "Term.h"
using namespace std;
// class polynomial;
// friend operator+(const polynomial& , const polynomial&);
class Polynomial
{
private:
Term *termArray;
int capacity;
int terms;
public:
Polynomial();
Polynomial(int, int);
friend Polynomial operator+(const Polynomial& , const Polynomial&);
};
这是我的Term.h:
#pragma once
using namespace std;
class Polynomial;
class Term
{
friend Polynomial;
private:
int exp;
float coef;
};
这是我的Polynomial.cpp文件:
#include <iostream>
#include "Polynomial.h"
#include "Term.h"
using namespace std;
Polynomial::Polynomial()
{
capacity = 1;
terms = 0;
}
Polynomial::Polynomial(int cap, int noOfTerms)
{
capacity = cap;
terms = noOfTerms;
termArray = new Term[terms];
}
Polynomial operator+(const Polynomial &a, const Polynomial &b)
{
for(int i = 0; i<a.terms; i++)
for(int j=0; j < b.terms; j++)
if(a.termArray[i].exp == b.termArray[j].exp)
{
//something to do here.
}
}
如果无法访问+的重载功能,则我得到的错误是在“ exp”内。
最佳答案
Polynomial operator+(const Polynomial &a, const Polynomial&b)
试图访问Term
类而不是Polynomial
类的私有成员。
因此,Polynomial operator+(const Polynomial &a, const Polynomial&b)
也必须成为Term
的朋友。
关于c++ - friend 功能无法访问另一个 friend 类的私有(private)成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32290354/