【问题标题】:How to pass a vector from a member function to another in the same class?如何将向量从成员函数传递给同一个类中的另一个?
【发布时间】:2017-09-12 12:48:20
【问题描述】:

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

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

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

一位朋友告诉我,由于他们在同一个班级,我不需要做任何事情,但它一直说“未声明的标识符 L”。

【问题讨论】:

  • 我认为这是 C++,所以我重新标记了它。
  • 一个大写字母名称对变量来说很糟糕

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    #pragma once
    #include <string>
    #include <iostream>
    #include <vector>
    
    class Game
    {
        std::vector<std::string> _l;
    
        public:
            Game();
            ~Game();
    
        void draw();
     };
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 2020-06-10
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      相关资源
      最近更新 更多