Я работал над заданием, которое мы получили от нашего профессора, где мне нужно поработать над классом вариационных шаблонов. Проблема в том, что я не могу изменить членов класса в рекурсивном конструкторе. Я не могу понять, почему это так, как только он перейдет к следующему вызову конструктора, он отменит мои изменения в переменной.
Что я пробовал:
-
используя указатель
int* count
вместоint count
-
используя сеттер для установки
counter
Я уже часами гуглял, но не могу найти решающего ответа.
Заголовочный файл "test.h":
#include <cstdarg>
#include <iostream>
class Counter {
private:
int count = 0;
int tmp;
public:
template <typename... Rest> Counter (int t, Rest... rest) {
count++;
std::cout << "start recursive number " << count << "...\n";
Counter(rest ...);
tmp = t;
std::cout << "end recursive number " << count << "...\n";
}
Counter (int t) {
count++;
tmp = t;
std::cout << "reached end of recursive -> " << count << "\n";
}
};
main.cpp:
#include "test.h"
int main () {
Counter a {0, 1, 2, 3, 4};
}
На выходе я получил:
start recursive number 1...
start recursive number 1...
start recursive number 1...
start recursive number 1...
reached end of recursive -> 1
end recursive number 1...
end recursive number 1...
end recursive number 1...
end recursive number 1...