可能重复:
内部类可以访问私有变量吗?
内部类访问外部类
我有一些简单的嵌套类,因此它们可以在没有额外输入的情况下与变量交互,但我的编译器给了我一个错误。我如何允许他们在不使用 &time 作为函数输入或在 Vect 类中包含变量 &time 的情况下进行交互?
我尝试使用相同的逻辑,您可以访问仅在代码中的数据,与函数原型位于相同的位置,而是包装在一个类中。这适用于我使用过的任何东西,除了其他类。谁能解释为什么?
我已经用定义之前的注释行标记了使用有问题的时间变量的地方。
/*********/
#define MAX_POLY 3
class Container
{
public:
Container(void);
~Container(void);
float time;/*********/
class Vect
{
float P[MAX_POLY],iT;
public:
Vect(void){iT = 0.0f;P = {0,0,0};}
~Vect(void);
float GetPoly(int n){return P[n];}
float Render(void)
{
float t = time - iT;/*********/
float temp[2] = {0,0};
for(int n=0;n<MAX_POLY;n++)
{
temp[0] = P[n];
for(int m=0;m<n;m++)
temp[0] *= t;
temp[1] += temp[0];
}
return temp[1];
}
void SetPoly(int n,float f)
{
float t = time-iT;/*********/
P[0] = P[2]*t*t + P[1]*t + P[0];
P[1] = 2*P[2]*t + P[1];
//P[2] = P[2];
P[n] = f;
iT = time;/*********/
}
}X;
};
int main()
{
Container Shell;
Shell.X.SetPoly(0,5);
Shell.X.SetPoly(1,10);
Shell.X.SetPoly(2,-1);
for(int n=0;n<10;n++)
{
Shell.time = (float)n;
cout << n << " " << Shell.X.Render() << endl;
}
system("pause");
return 0;
}