0
Foo.hpp:
class Foo
{
public:
void print() const;
protected:
vector<Bar<string, int>*> bar_;
};
void Foo::print() const
{
copy(bar_.begin(), bar_.end(), ostream_iterator<Bar<string, int>*>(cout, "\n"));
}
Bar.hpp:
class Bar
{
public:
template <typename K, typename U>
friend ostream& operator<<(ostream&, const Bar<K, U>&);
}
template <typename Key, typename T>
ostream& operator<<(ostream& out, const Bar<Key, T>& bar)
{
return out << "FOOBAR";
}
哪裏bar_是富的屬性,是指針欄元素的向量。假設bar_有一個元素,則輸出:
Foo foo;
foo.print();
是bar_中元素的地址,而不是「FOOBAR」。如果我不使用指針,輸出將是「FOOBAR」我想在這裏實現的是打印「FOOBAR」bar_的每個指針。