如何在同一个 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();
};
或者你也可以直接给你的函数作为参数
但成员变量声明似乎是最好的解决方案
我尝试了很多搜索,但找不到答案。我找到的几乎每个答案都是关于在两个 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();
};
或者你也可以直接给你的函数作为参数
但成员变量声明似乎是最好的解决方案