这是使用C ++的面向对象编程类的赋值。在这个程序中,我需要能够访问另一个函数在一个函数中初始化的静态指针。更具体地说,我希望能够从“输入”功能访问在“分配”功能中初始化的指针x。在任何人问之前,我不允许使用任何全局变量。
#include <iostream>
using namespace std;
void allocation()
{
static int *pointerArray[3];
static int **x = &pointerArray[0];
}
bool numberCheck(int i)
{
if(i >= 0)
{
return true;
}
else
{
return false;
}
}
void input()
{
int input1,input2;
cout << "Input two non-negative integers.\n";
cin >> input1;
while(!numberCheck(input1))
{
cout << "You typed a non-negative integer. Please try again.\n";
cin >> input1;
}
cin >> input2;
while(!numberCheck(input2))
{
cout << "You typed a non-negative integer. Please try again\n";
cin >> input2;
}
// Here I'd like to access pointer x from the allocation function
}
int main()
{
allocation();
input();
return 0;
}
答案 0 :(得分:1)
如果没有allocation
函数本身的合作,就无法以便携方式完成。
作用域规则阻止在实际x
函数之外使用allocation
。它的持续时间可能在函数之外(是静态的),但其范围(即其可见性)不是。
你可以在某些实现中使用 hacks ,但是,如果你要学习这门语言,你最好先学习一门语言,而不是依靠不起作用的技巧。无处不在。
如果您被允许以某种方式更改 allocation
功能,我会查看类似的内容:
void allocation (int ***px) {
static int *pointerArray[3];
static int **x = &pointerArray[0];
*px = x;
}
:
int **shifty;
allocation (&shifty);
// Now you can get at pointerArray via shifty.
至少在不使用全局的情况下是可移植的,但我怀疑它也不会被禁止。