c++ - 当包含类头时,为什么我的数组在 main 中未定义?

标签 c++ arrays function-pointers

所以这是我尝试通过指针调用数组的主要部分:

#include <iostream>
#include "Lottery.h"
#include "Player.h"
#include "LotteryData.h"
using namespace std;

int main()
{
    Player player;
    Lottery random;
    LotteryData data;
    player.Input();
    random.setRandomNumber();
    data.PassInfo(int (&Numbers)[6][6]);   

}

显然“Numbers”未定义,即使包含 header ,这里是 header 和与之相关的 .cpp 文件。

LotteryData.h

#pragma once
#include <iostream>
#include <fstream>
#include "Lottery.h"
#include "Player.h"
using namespace std;

class LotteryData
{
    private:

    public:
    LotteryData();
    ~LotteryData();
    void PassInfo(int (&Numbers)[6][6]);
};

LotteryData.cpp

#include <iostream>
#include <fstream>
#include "LotteryData.h"
using namespace std;

LotteryData::LotteryData()
{
}

LotteryData::~LotteryData()
{
}

void LotteryData::PassInfo(int (&Numbers)[6][6])
{
    int* ptr;
    FILE *Numfile;
    Numfile = fopen("C:/Num.txt", "wb");
    ptr = &Numbers[6][6];
    for (int i=0; i<36; i++)
    {
        fwrite(ptr, sizeof(int), 36*36, Numfile);
    }
    fclose(Numfile);
    //ofstream out("Numbers.txt");

}

一切似乎都很好,我很困惑为什么 main 中的引用说数组未定义,有什么想法吗?

编辑:抱歉,遗漏了一些内容

播放器.h

#pragma once
#include <iostream>
#include <fstream>
using namespace std;

class Player
{
    private:

    public:
    Player();
    ~Player();
    void Input(); 
    int Numbers[6][6];
};

播放器.cpp

#include <iostream>
#include <fstream>
#include "Player.h"
using namespace std;

Player::Player()
{

}

Player::~Player()
{

}

void Player::Input()
{
    int num(0);
    int duplicate = 0;
    int game = 0;
    int NumberofGames = 0;

    cout<<"How many games do you want to play for this weeks draw?"<<endl;
    cin>>NumberofGames;
    if (NumberofGames>6)
    {
        cout<<"Please enter an amount between 1 and 6"<<endl;
        cin>>NumberofGames;
    }

    do
    {

        for (int i=0;i<6;i++)
        {
            cout<<"Enter Number "<< (i+1) <<endl;
            cin>>num;

            if (num > 0 && num <67)
            {
                Numbers[game][i]= num;
            }
            else
            {
                cout <<"Please enter number between 1 and 66"<<endl;
                i = i-1;
            }

        }
        game = game + 1;
        NumberofGames = NumberofGames - 1;

    }
    while (NumberofGames=0);
}

最佳答案

void PassInfo(int (&Numbers)[6][6]);

该行没有声明一个数组——它声明了一个函数。您的类中没有数组声明(实际上,您的类中根本没有声明数据成员)。

如果你想声明一个成员数组,你需要修改你的类定义:

class LotteryData
{
private:
        int Numbers[6][6]; // this declares an array
public:
    LotteryData();
    ~LotteryData();
    void PassInfo(int (&arr)[6][6]); // this is still a function declaration
};

关于c++ - 当包含类头时,为什么我的数组在 main 中未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20547652/

相关文章:

c++ - 默认情况下,如何使函数指针参数无操作?

c++ - 使用来自另一个 channel 的 channel 时出现 LLVM 错误

javascript - 如何在 JavaScript 中将两个数组转换为一个对象?

c++ - 动态创建一个函数指针来调用给定实例上的方法

javascript - 将数组的数组的每个数组转换为字符串数组

javascript - 无法读取未定义的列表列表的属性 'name'

C++,比较器,函数指针

c++ - 尝试在 vector 类中创建调整大小函数

c++ - 指向 auto_ptr 的指针而不是经典的双指针

c++ - 我如何开发一个类来返回指定范围内的唯一数字?