簡體   English   中英

當包含類頭文件時,為什么在main中未定義我的數組?

[英]Why is my array undefined in main when the class headers are included?

所以這是我試圖通過指針調用數組的主要地方:

#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”也是未定義的,這是與之相關的標頭和.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");

}

一切似乎都很好,我很困惑為什么主引用中的數組未定義,有什么想法嗎?

編輯:道歉,錯過了一些

播放器

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

class Player
{
    private:

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

Player.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
};

僅僅因為將函數的參數命名為Numbers並不意味着您的程序中聲明了一個稱為Numbers的數組。

在您的main()函數中,

data.PassInfo(int (&Numbers)[6][6]); 

錯了 您應該簡單地傳遞對2D數組的引用。

int (&Numbers)[6][6];
data.PassInfo(Numbers); 

因此, Player有一個名為“ Numbers”的數組。

然后,您將像這樣使用它:

data.PassInfo(player.Numbers);   

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM