Проблема с областью видимости массива
У меня есть вектор в мейне, как передать его в класс? На пример в классе есть ссылка, то нужно присвоить этот класс ссылке или указателю. У меня почему что в классе не видно моего массива.
class Builder {
shared_ptr<Unit> Sarr = arr;
public: virtual void addWizard() = 0;
virtual void addWorker() = 0;
virtual void addWarrior() = 0;
virtual void CreatGroup() = 0;
};
int main() {
srand(time(0));
vector<shared_ptr<Unit>> arr;
system("pause");
}
Ответы (1 шт):
Поставьте себя на место компилятора. Вы читаете описание класса, натыкаетесь на какое-то arr, которое нигде жо этого не встречалось... Что ему делать?
Более того, это arr - локальная переменная в main. А представим, что перед main у вас строка -
Builder b;
Да, я знаю, что это абстрактный класс... но представим на минуту, что он не абстрактный - как ему этот arr получить, которого и на свете-то нет?
Нет уж, будьте любезны соблюдать правила видимости... типа
class Builder {
public:
Builder(const shared_ptr<Unit>& arr):Sarr(arr){}
shared_ptr<Unit> Sarr;
и после этого передавайте тот arr, который нужен и там, где он существует...