在类方法中包含main()中的容器

时间:2016-12-19 01:49:37

标签: c++

我有一个容器,它位于main()中,但我还需要将它包含在具有自己的.h和.cpp文件的类的方法中。

我的主要代码有:

vector<lex> words;
vector<lex>::iterator it;

我的方法从带有逗号作为分隔符的文件中提取单词。每次敲击分隔符时,该单词都会被推入lex:

string temp;
lex *f1;
f1 = new lex;

ifstream tofill( "filler.txt", ios::out );
if( tofill.eof() )
    cout<<"Empty File";
else if( tofill.is_open() )
{
    while( !tofill.eof() )
    {       
        getline( tofill, temp, ',' );
        f1->setWords( temp );   
        list.push_back( *f1 );

显示容器中数据的方法:

for( it = list.begin(); it != list.end()-1; ++it )
{ 
    it->showWords();
}

如果我创建一个新的.h文件并将容器放入其中,并将其包含在lex.cpp中但是我无法将容器包含在main()的方法中,这个代码是否有效,是否有办法我可以在类方法中包含main()中的容器吗?

1 个答案:

答案 0 :(得分:2)

你不能通过参考传递矢量吗?

class Foo {
    void someMethod(std::vector<lex>& words);
}

void Foo::someMethod(vector<lex>& words) {

    words.push_back( (lex()) ); 
}

用法:

vector<lex> words;

Foo foo;
foo.someMethod( words );

或by-pointer(如果nullptr在您的应用程序中有意义,因为引用不应为null):

class Foo {
    void someMethod(std::vector<lex>* words);
}

void Foo::someMethod(vector<lex>* words) {

    if( words != nullptr ) {
        words.push_back( (lex()) ); 
    }
}

用法:

vector<lex> words;

Foo foo;
foo.someMethod( &words );