gpt4 book ai didi

c++ - 带指针的 ostream_iterator

转载 作者:行者123 更新时间:2023-11-28 06:59:36 25 4
gpt4 key购买 nike

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"));
}

酒吧.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_ 是 Foo 的属性,是指向 Bar 元素的指针 vector 。假设 bar_ 有一个元素,则输出:

Foo foo;
foo.print();

是bar_中元素的地址,而不是“FOOBAR”。如果我不使用指针,输出将是“FOOBAR”我在这里想要实现的是为 bar_ 的每个指针打印“FOOBAR”。

最佳答案

尝试添加:

template <typename Key, typename T>
ostream& operator<<(ostream& out, Bar<Key, T>* bar)
{
return out << *bar;
}

关于c++ - 带指针的 ostream_iterator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22679158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com