C++ 如何通过同样位于向量中的指针来查找作为类成员的向量的大小

C++ 如何通过同样位于向量中的指针来查找作为类成员的向量的大小,c++,vector,C++,Vector,所以我有一个包含向量的类,这个类在另一个向量中添加了一个指向自身的指针。在一个单独的函数中,我有一个for循环,它遍历包含类指针的向量并打印类中向量的大小,但我没有得到任何输出 下面是包含类构造函数的函数和定义的源文件: #include <SDL2/SDL.h> #include <vector> #include <initializer_list> #include <iostream> #include "InputManager.h"

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

结果证明我使用的方法是正确的。我通过将函数移到头文件中解决了这个问题。

Hmm,看起来不错。但这可能是因为我缺乏经验。您到底遇到了什么编译器错误?请编辑你的问题并逐字逐句地写出来`代码看起来不错,问题的原因是其他原因。如果没有输出,则最可能的原因是
按钮
向量为空。所以问问你自己为什么会这样。我没有发现任何错误。当函数被调用时,我没有输出。@cooljacwty然后就像我说的,那是因为
按钮
向量是空的。缺少太多的代码,特别是实例化
按钮
对象并将其地址添加到向量
按钮
的代码。没有这一点,没有人能帮上忙——他们所能做的就是猜测你没有展示的代码在做什么或没有做什么。阅读有关提供
#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);

Button BUp({SDLK_w, SDLK_UP});