所以我有一个包含向量的类,该类在另一个向量中添加了一个指向自身的指针。在一个单独的函数中,我有一个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});
答案 0 :(得分:0)
证明我使用的方法是正确的。我通过将函数移到头文件中解决了该问题。