我有一个容器,它位于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()中的容器吗?
答案 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 );