2017-04-16 3 views
0

多くの検索を試みましたが、回答が見つかりませんでした。私が見つけたほとんどすべての答えは、2つのクラスの間を通過することです。同じクラスのメンバー関数から別の関数にベクトルを渡すにはどうすればよいですか?

私の問題は、あるメンバ関数で文字列のベクトルを宣言して定義したいのですが、同じクラスの別のメンバ関数でそのベクトルを変更したいと思っています。ここに私のコードは次のとおりです。

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"と言っている。

+0

私はこれがC++だと思うので、私はそれを再タグ付けしました。 – halfer

+0

大文字の1つの名前は変数にとってひどい – bolov

答えて

2

メンバー関数でローカル変数を宣言し、別のメンバー関数から表示されるように見えているようです。

メンバー関数間で変数を使用できるようにするには、クラス宣言内でクラスのmember variableとして宣言し、それを関数のローカル変数として宣言しないでください。

1

あなたはメンバ変数

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

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

    public: 
     Game(); 
     ~Game(); 

    void draw(); 
}; 

か、また、ちょうど直接あなたの関数にパラメータとして

を与えることができますが、メンバ変数の宣言は最高のようだとして、あなたのベクトルを宣言することができる2つのソリューションを持っていますソリューション

関連する問題