【发布时间】:2015-11-24 06:06:53
【问题描述】:
我有两个类 Term 和 Polynomial。多项式类被声明为 Term 类的朋友。多项式类中有友元函数。当我在多项式类的 cpp 文件中实现该函数时,Term 的私有成员不会在那里被访问。虽然 Polynomial 类被声明为它的朋友。我只需要在该函数中访问 Term 的私有成员。有什么帮助吗?这是我的代码:
多项式.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”。
【问题讨论】:
-
您的
Term类只能由Polynomial使用。它也可能是一个嵌套类。
标签: c++ friend friend-function