如何在同一个 class 中将向量从一个成员函数传递给另一个成员函数?

How to pass a vector from a member function to another in the same class?

我尝试了很多搜索,但找不到答案。我找到的几乎每个答案都是关于在两个 class 之间传递的。

我的问题是,我想在一个成员函数中声明和定义一个字符串向量,然后我想要相同 class 的另一个成员函数来修改该向量,但它就是行不通。这是我的代码:

void Game::draw_table(){

std::vector<std::string> L(3);

L[0] = "something";
L[1] = "something else";
L[2] = "yet another something";

std::cout << L[0] << std::endl;
std::cout << L[1] << std::endl;
std::cout << L[2] << std::endl;
}

然后我想让另一个成员函数修改它:

void Game::play_game(){

//some code

if (coord1 == 1 && coord2 == 1)
    L[0] = "new something";
}      

一个朋友告诉我,因为他们在同一个 class 我不需要做任何事情,但它一直说 "Undeclared identifier L"。

您似乎在成员函数中声明了一个局部变量,并希望它对另一个成员函数可见。

如果您希望一个变量在成员函数中可用,您必须在 class 声明中将其声明为 class 的 member variable,而不是将其声明为函数的局部变量。

你有两个解决方案你可以将你的向量声明为成员变量

#pragma once
#include <string>
#include <iostream>
#include <vector>

class Game
{
    std::vector<std::string> _l;

    public:
        Game();
        ~Game();

    void draw();
 };

或者你也可以直接给你的函数作为参数

但成员变量声明似乎是最好的解决方案