我有两个类别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/

10-09 13:22