Итак, я в настоящее время участвую в этом упражнении: Напишите функцию, которая печатает элементы в массиве. Массив передается функции по аргументу. Если этот аргумент не является массивом, должно быть выбрано исключение типа invalid_argument. Проверьте функцию в функции main().Как проверить, является ли тип данных массивом? (C++)
Так что мой код в настоящее время выглядит следующим образом:
#include <iostream>
#include <exception>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::invalid_argument;
using std::string;
template<class T>void printArray(T arr){
try{
arr.size();
}
catch(...){
for (int i=0; i < sizeof(arr); i++){
cout << arr[i] << endl;
}
}
throw invalid_argument("Argument not of type array");
};
int main(){
string arrChars[5] = {"1", "2", "3", "John", "5"};
string s = "Jack";
try{
printArray(arrChars);
}
catch(invalid_argument &e){
cout << "Error: " << e.what() << endl;
}
return 0;
}
Это после того, как уже пробовать другие варианты, такие как:
template<class T>void printArray(T arr[]){
...
}
Что не позволяет программе работать либо как я не могу пройти любые аргументы функции printArray()
, которые не являются массивами.
Мой план с кодом состоит в замене arrChars
и s
в качестве аргументов printArray()
, чтобы определить успех программы.
Это не компилируется, если вы прошли не-контейнер, хотя. – Barry
@Barry Это очень хорошо, если он не будет компилироваться. :) –