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