gpt4 book ai didi

c++ - 在模板化容器成员上调用类函数

转载 作者:行者123 更新时间:2023-11-27 23:53:48 25 4
gpt4 key购买 nike

我正在尝试在模板函数内的 vector 成员上调用静态函数。但我无法使代码正常工作。我收到错误消息:“Do”不是“__gnu_cxx::__alloc_traits >::value_type& {aka A&}”的成员,有什么想法吗?

struct A {
static void Do() { cout << "Hey.\n"; }
};

template <typename T>
void foo(T* v) {
decltype(v->at(0))::Do();
}

int main() {
vector<A> v;
foo(&v);
return 0;
}

最佳答案

T::value_type::Do();

或者

std::remove_reference<decltype(v->at(0))>::type::Do();

或者

std::decay<decltype(v->at(0))>::type::Do();

或者如果您不关心强制静态性(并且知道 vector 是非空的):

 v->at(0).Do(); 

关于c++ - 在模板化容器成员上调用类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44190378/

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