gpt4 book ai didi

c++ - 在 "templated-base-class"中调用模板方法时出错

转载 作者:太空狗 更新时间:2023-10-29 20:46:12 24 4
gpt4 key购买 nike

下面的代码编译不通过,这是为什么呢?我该如何解决这个问题?

struct A{
template<int N> int get() { return N; }
};

template <typename X>
struct B : public X {
template<int N> int get() {
return X::get<N>();
}
};

int main(int argc, const char *argv[])
{
B<A> b;
return b.get<5>();
}

编译器错误:

test.cxx: In member function ‘int B<X>::get()’:
test.cxx:8:30: error: expected primary-expression before ‘)’ token
test.cxx: In member function ‘int B<X>::get() [with int N = 5, X = A]’:
test.cxx:15:25: instantiated from here
test.cxx:8:30: error: invalid operands of types ‘<unresolved overloaded function type>’ and ‘int’ to binary ‘operator<’

最佳答案

你必须消除歧义,像这样:

template<int N>int get() {
return X::template get<N>();
}

关于c++ - 在 "templated-base-class"中调用模板方法时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8755003/

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