如何通过也在向量中的指针查找作为类成员的向量的大小

How to find size of vector that is a member of a class through a pointer that is also in a vector

本文关键字:向量 成员 指针 何通过 查找      更新时间:2023-10-16

所以我有一个包含向量的类,该类在另一个向量中添加了一个指向自身的指针。在一个单独的函数中,我有一个 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);

编辑:阅读评论后,我发现buttons数组实际上是空的。它应该由构造函数填写。

下面是在我的主文件中创建的类实例的示例,其中包含标头:

Button BUp({SDLK_w, SDLK_UP});

事实证明我使用的方法是正确的。我通过将函数移动到头文件中来解决此问题。