为什么在包含类头的情况下,我的数组在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]);
};
彩票数据.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");
}
一切似乎都很好,我很困惑为什么主要的引用说数组是未定义的,有什么想法吗?
编辑:道歉,错过了一些位
Player.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
};
仅仅因为您将函数的参数命名为Numbers
并不意味着您的程序中声明了一个名为Numbers
的数组。
所以Player
有一个名为"Numbers"的数组。
然后你会这样使用它:
data.PassInfo(player.Numbers);
在main()函数中,
data.PassInfo(int (&Numbers)[6][6]);
这是错误的。您应该简单地传递对2D数组的引用。
int (&Numbers)[6][6];
data.PassInfo(Numbers);
相关文章:
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 为什么在我的 main 函数中声明整数后我的整数数组中会出现错误?
- 动态数组传递给 main 中用随机值填充的函数,返回值3221226356
- 使用函数从 Visual Studio 2017 中的 main 创建和初始化数组
- 如何使类函数返回数组,然后将其调用并存储在 main 中
- void 函数将数组发送回 main,但我无法让数组正确输出值
- 如何编写一个 void 函数,该函数将在数组中搜索值,并通过引用将该值的位置传递回 main 函数
- 如何在另一个函数中初始化在 main 中声明的数组
- 似乎无法让字符数组离开函数并在 main 中使用
- 从 Main 中的双指针函数打印出指针数组
- 在C 中的另一个函数中使用Main()中的数组
- 如何将指向数组的指针从 main 传递到函数
- 析构函数删除在 main 中声明的动态数组
- 在代码块错误中收到此错误:数组下标'main()::fields[int]'的类型无效
- C++ int main (int argc, char *argv[]) - 是 argv a c 样式数组
- 在 main.cpp 以外的文件中定义静态数组
- 当结构定义在头文件中时,如何在main()中创建结构数组
- C++:使来自main()的数组在另一个函数中可用
- 为什么在包含类头的情况下,我的数组在main中未定义
- 如何在main中使用指针数组