如何从C ++中的类调用main函数中的数组?

时间:2014-10-01 22:38:54

标签: c++ arrays class scope

我以前在高中时就这样做但我已经练习了几年。 我想要做的是创建一个数组,它将存储1-100个100个ID。 (这适用于为每个项目分配其中一个ID以区分每个项目的游戏) 这是我的代码,

#include <iostream>
#include <string>

using namespace std;

class items_class
{
public:
    items_class();
    ~items_class();
    static int item_ID[100];
};

items_class::items_class()
{
    for(int i=0;i<=100;i++)
        {
            item_ID[i] = i;
        }

}

int main()
{
    items_class items();

    for(int x=0;x<=100;x++)
        {
            cout << items.item_ID[x] << endl;
        }
}

但是当我尝试编译它时,我收到了这个错误:

  

main.cpp:29:27:错误:请求成员&#39; item_ID&#39;在&#39; items&#39;中,哪个   是非类型&#39; items_class()&#39;                cout&lt;&lt; items.item_ID [x]&lt;&lt; ENDL;

谁能告诉我为什么会这样?它可能非常明显,但我无法解决这个问题,我整夜都在网上搜索过! GRR。

提前致谢!

2 个答案:

答案 0 :(得分:0)

这里有你缺少的东西,你宣布你的静态变量,但从未定义它!

#include <iostream>
#include <string>

using namespace std;


class items_class
{
public:
    items_class();
    ~items_class();
    static int item_ID[100];
};

int items_class::item_ID[100]; // Need to define the static variable in a compilation unit.
items_class::items_class()
{
    for(int i=0;i<=100;i++)
        {
            items_class::item_ID[i] = i;
        }

}

int main()
{
    items_class items();

    for(int x=0;x<=100;x++)
        {
            cout << items_class::item_ID[x] << endl;
        }
}

答案 1 :(得分:0)

前面的答案假设静态变量是你想要的。另一种方法是删除static关键字。然后,在声明项目时,删除parens