Как создать параметр класса в виде динамического массива и присвоить ему значение?
Вроде бы сделал класс, перегрузил вывод для него, но после вывода мне выдаётся следующее:
value_print: Length: 2, Number: 3 -33686019
, хотя ожидалось value_print: Length: 2, Number: 2 3
. Если я в методе factor_digits
присвою counter=-1
, то будет выведено value_print: Length: 2, Number: 2 -33686019
.
Я как-то неправильно массив инициализирую в конструкторе, или объявил неверно (int* number;
), или неправильно его заполняю?
Код в наличии:
#include <iostream>
#include "vector"
#include "string"
#include "algorithm"
class RandomAccuracyNumber {
private:
int length;
int* number; // array of int
void factor_digits(int num, int* number, int counter = 0)
{
if (num == 0)
return;
int d = num % 10;
factor_digits(num / 10, number, counter);
number[counter] = d;
counter++;
}
public:
RandomAccuracyNumber(int length = 0, int number = 0) {
this->length = length;
this->number = new int(length);
factor_digits(number, this->number);
cout << "default constructor for " << this << endl;
}
friend ostream& operator << (ostream& os, RandomAccuracyNumber& v) {
os << "Length: " << v.length << ", ";
os << "Number: ";
for (int i = 0; i < v.length; i++)
{
os << v.number[i] << ' ';
}
os << endl;
return os;
}
};
void printValue(RandomAccuracyNumber value) {
cout << "value_print: " << value << endl;
}
RandomAccuracyNumber globalValue = RandomAccuracyNumber(2, 23);
int main() {
printValue(globalValue);
system("Pause");
return 0;
}
Источник: Stack Overflow на русском