Как найти размер вектора, который является членом класса, через указатель, который также находится в векторе - PullRequest
0 голосов
/ 08 июня 2019

Итак, у меня есть класс, который содержит вектор, и класс добавляет указатель на себя в другом векторе.В отдельной функции у меня есть цикл for, который проходит через вектор, содержащий указатели класса, и печатает размер вектора в классе, но я не получаю вывод.

вот исходный файл с функцией и определениемконструктора класса:

#include <SDL2/SDL.h>

#include <vector>
#include <initializer_list>
#include <iostream>

#include "InputManager.h"

//Vector including class pointers
std::vector<Button*> buttons;

//Constructor for class
Button::Button (std::initializer_list<SDL_Keycode> list) {
    buttons.push_back(this);

    for ( auto nkey : list )
    {
        this->keys.push_back(nkey);
    }
}


void inputScan (SDL_Keycode inKey, bool nState) {

for (auto bAddrs : buttons)
    {
        std::cout << (bAddrs->keys).size();
    }
}

и вот заголовок с объявлением класса:

#pragma once

class Button
{
public:

    std::vector<SDL_Keycode> keys;
    bool state = 0;
    //Member vector who's size i'm trying to output
    Button (std::initializer_list<SDL_Keycode> list);
};

void inputScan (SDL_Keycode, bool);

edit: после прочтения комментариев я обнаружил, что массив buttons действительно пуст,Он должен быть заполнен конструктором.

Вот пример экземпляра класса, созданного в моем главном файле, который включает заголовок:

Button BUp({SDLK_w, SDLK_UP});

1 Ответ

0 голосов
/ 10 июня 2019

Оказывается, метод, который я использовал, является правильным. Я исправил проблему, переместив функцию в файл заголовка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...