Это мой dice.hIm не в состоянии получить доступ к функции (которая находится в классе) от основной, используя массив указателей
class Dice
{
public:
int value;
int nrOfFaces;
Dice();
void toss();
};
это мой dice.cpp
//this is the default constructor (has no parameter)
Dice::Dice()
{
nrOfFaces = 6;
value = rand() % nrOfFaces + 1;
}
//this function gives the dice a new random value
void Dice::toss()
{
value = rand() % nrOfFaces + 1;
}
Чтобы немного объяснить, что я пытаюсь сделать здесь. Я отправлю код, который находится в основном внизу этого сообщения. В главном коде Im застрял в той части, где, как вы можете видеть, я объявляю массив указателей. Теперь я пытаюсь сначала бросить 5 кубиков в одну петлю. и в другой фикере I, пытающейся распечатать значение 5 кубиков. Но то, как я делаю это, похоже, не работает. Я не получаю ошибку, но программа ломается, когда она добирается до pYatzy [i] -> toss();
Вот мой main.cpp
int main()
{
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
//type cast is done in the c++ way
srand(static_cast<unsigned>(time(NULL)));
Dice *dice1 = new Dice;
cout << dice1->value << endl << endl;
dice1->toss();
cout << dice1->value << endl << endl;
for (int i = 0; i < 5; i++)
{
dice1->toss();
cout << dice1->value;
cout << " ";
}
Dice *pYatzy[5];
for (int i = 0; i < 5; i++)
{
pYatzy[i]->toss();
}
for (int i = 0; i < 5; i++)
{
}
system("pause>nul");
return 0;
}
Спасибо!
Я просто использую «новые», потому что инструкции учителя просили нас. Код, который вы только что написали, - это все еще массив указателей? Я вроде как использовал это для начала, потому что знаю, что массив уже является указателем. Это оно? –
@TarikNeaj нет, это массив объектов. Если вам действительно нужен массив указателей, вам придется перебирать и называть 'new' 5 раз. –
Да, мне нужно сначала объявить массив из 5 указателей в Dice. Затем я должен бросить эти 5 кубиков, а затем распечатать их значения. Не могли бы вы показать мне, как это сделать? Я всю ночь учился и разбирал вещи. –