size_t
является целочисленным типом, и приведение не требуется.
В C ++, если вы хотите иметь массив с динамическим размером , вам нужно использовать динамическое выделение с использованием new
.То есть вы не можете использовать:
std::size_t sz = 42;
char carray[sz];
Вместо этого вам нужно использовать следующее:
std::size_t sz = 42;
char* carray = new char[sz];
// ... and later, when you are done with the array...
delete[] carray;
или, предпочтительно, вы можете использовать std::vector
(std::vector
управляет памятью, так что вам не нужно помнить об ее явном удалении, и вам не нужно беспокоиться о многих проблемах владения, которые возникают при динамическом распределении вручную):
std::size_t sz = 42;
std::vector<char> cvector(sz);