Я пытаюсь передать этот массив функции, но я продолжаю получать, ошибка C2664: «correctans»: невозможно преобразовать параметр 2 из «std» :: string [3] [3] 'to' std :: string ** ', не обращайте внимания на глупые вопросы в коде, которые он просто случайно тестирует.Передача двумерного массива функции с помощью указателя в C++
код:
#include <iostream>
#include <string>
using namespace std;
int correctans(string *arr1, string **arr2, int *arr3, int questions, int choices)
{
int count=0;
int ans;
for(int i=0; i<questions; i++)
{
cout << "Question #" << i+1;
cout << arr1[i] << endl;
for(int j=0; j<choices; j++)
cout << j+1 << arr2[i][j] << " ";
cout << "your answer:";
cin >> ans;
if(ans==arr3[i])
count++;
}
return count;
}
int main()
{
int correct;
string Questions[3]={"HowAreYou", "HowManyHandsDoYouHave", "AreYouCrazyOrCrazy"};
string Choices[3][3]={{"Banana", "Peanut", "Fine"},{"Five", "Two", "One"},{"I'mCrazy", "I'mCrazyBanana", "I'mDoubleCrazy"}};
int Answers[3]={3, 2, 3};
correct=correctans(Questions, Choices, Answers, 3, 3);
cout << "You have " << correct << " correct answers" <<endl;
return 0;
}
Спасибо, много это сработало: D !! – WildBeginner
, но у меня есть вопрос, что если я не знаю, что такое размер 2d-массива, что я могу использовать вместо [3] [3], потому что я попытался изменить число только от функции, но он не работал i хотите быть в состоянии установить его до любого размера, что это возможно? – WildBeginner
@WildBegginner: вы можете создать функцию '' correctans''. '' template correctans (..., string (& arr) [SIZE] [SIZE], ...) ''. Но если вы не знаете размер во время компиляции, это не сработает. –
fogbit