[英]Manipulate members of vector in class
我正在開始編寫課程,並且有以下問題。 假設我有以下課程:
class foo
{
private:
int bar;
public:
foo(int bar): bar(bar){}
void set_bar(int ubar){bar=ubar;}
int get_bar(){return bar;}
};
現在,我想編寫一個包含foo
實例的類。
class foo_cont
{
private:
vector<foo> foo_vec;
public:
foo_cont(){}
void add_element(foo f1){foo_vec.push_back(f1);}
};
可以說我對foo_cont f1;
進行了實例化foo_cont f1;
並用foo
實例填充foo_vec
。 如何使用set_bar()
修改foo_vec
的元素?
編輯:由於我是堆棧溢出的新手,這可能是一個非常愚蠢的問題,但是為什么我會投票不足?
您可以為foo_cont
類定義operator []
。 例如
class foo_cont
{
private:
vector<bar> foo_vec;
public:
// ...
bar & operator []( size_t i )
{
return foo_vec[i];
}
const bar & operator []( size_t i ) const
{
return foo_vec[i];
}
};
例如
for_cont[i].set_bar( 10 );
無論如何,如果要在類范圍之外更改向量的元素,則需要為它們提供訪問器。
如何使用set_bar()修改foo_vec的元素?
在類foo_cont
如果要在foo_cont
向量的第一個元素上調用set_bar()
,則可以使用:
foo_vec[0].set_bar(10);
如果要在foo_cont
向量的第n
個(按索引)元素上調用set_bar()
,請使用:
foo_vec[n].set_bar(10);
按班級用戶
您可以通過運算符或對向量本身提供訪問器函數來提供對foo_vec
第n
個元素的訪問。
bar& operator[]( size_t i )
{
return foo_vec[i];
}
bar const& operator[]( size_t i ) const
{
return foo_vec[i];
}
並將其用作:
foo_cont f1;
f1.add_element(10);
int a = f1[0].get_bar();
要么
std::vector<foo>& get_foo_vector()
{
return foo_vec;
}
std::vector<foo> const& get_foo_vector() const
{
return foo_vec;
}
並將其用作:
foo_cont f1;
f1.add_element(10);
int a = f1.get_foo_vector()[0].get_bar();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.