的模板函数-6ren"> 的模板函数-我正在尝试为 std::vector 制作一个 pretty-print ... double ,我自己的自定义类...任何有 friend std::ostream& operator std::o-6ren">
gpt4 book ai didi

c++ - "Expected ; before..."带有打印 std::vector 的模板函数

转载 作者:搜寻专家 更新时间:2023-10-31 00:21:53 24 4
gpt4 key购买 nike

我正在尝试为 std::vector 制作一个 pretty-print ... double ,我自己的自定义类...任何有 friend std::ostream& operator<< 的东西.

但是,当尝试编译以下函数时:

template <typename T> 
std::ostream& operator<<(std::ostream& os, std::vector<T> const& list) {
std::vector<T>::const_iterator i = list.begin();

if (i == list.end()) {
os << "[ ]";
return os;
}

os << "[ " << *i << "\n";

++i;
for (; i != list.end(); ++i) {
os << ", " << *i << "\n";
}

os << "]";
return os;
}

第三行给出编译错误,error: expected ';' before 'i'

我不太确定是什么原因造成的,但我怀疑我滥用了模板。任何帮助将不胜感激!

最佳答案

编译器不知道您正试图将 i 声明为变量,因为该模板表达式是基于模板参数的。这就是关键字 typename 的用途。试试这个:

  typename std::vector<T>::const_iterator i = list.begin();

关于c++ - "Expected ; before..."带有打印 std::vector<Whatever> 的模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4000029/

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