gpt4 book ai didi

c++ - 错误 : expected primary-expression before 'template' - what am I doing wrong?

转载 作者:行者123 更新时间:2023-11-30 02:35:19 25 4
gpt4 key购买 nike

#include <iostream>
#include <vector>

template<class T> struct A {
A( const std::initializer_list<T> &list ) {
for( template std::initializer_list<T>::iterator it = list.begin();
it != list.end(); ++it ) {
content.emplace( *it );
}
}
~A() {};
std::vector<T> content;
};

int main() {
A<int> a = A<int>( { 1, 2, 3, 4, 5 } );
for( const int x : a.content ) {
std::cout << x << " ";
}
return 0;
}

上面的代码反射(reflect)了我遇到的一个问题。当我尝试编译时,我得到:错误:"template"之前的预期主表达式...错误:“它”未在此范围内声明for 第 14 行(迭代器 for 循环)。我尝试了一些变体,但我对它们一无所获。有人知道这个问题吗?谢谢。

最佳答案

  1. 模板关键字使用不当,假设是typename 或只是使用auto

    for( 模板 std::initializer_list::iterator it = list.begin(); ^^^^^^^^ 它 != list.end();++它){

  2. 错误使用 [std::vector::emplace][1]

修复是:

    for( auto it = list.begin(); it != list.end(); ++it ) 
{
content.emplace(content.end(), *it );
}

或:

content.insert(content.end(), list);

关于c++ - 错误 : expected primary-expression before 'template' - what am I doing wrong?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33769271/

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