如何将成员函数中的向量传递给同一个类中的另一个?

时间:2017-04-16 21:31:18

标签: c++ vector pass-by-reference member-functions

我尝试了很多,但我找不到答案。我发现的几乎所有答案都是关于在两个班级之间进行的。

我的问题是我想在一个成员函数中声明和定义一个字符串向量,然后我想要同一个类的另一个成员函数来修改所述向量,而它只是没有用完。这是我的代码:

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";
}      

一位朋友告诉我,由于他们在同一个班级,我不应该做任何事情,但它一直在说&#34;未声明的标识符L&#34;。

2 个答案:

答案 0 :(得分:2)

看起来您已在成员函数中声明了一个局部变量,并希望它可以从另一个成员函数中看到。

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

答案 1 :(得分:1)

您有两种解决方案可以将矢量声明为成员变量

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

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

    public:
        Game();
        ~Game();

    void draw();
 };

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

作为参数

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