gpt4 book ai didi

c++ - 无法将参数 1 从 'VP' 转换为 'VP &',这是另一个 VS 错误

转载 作者:搜寻专家 更新时间:2023-10-31 01:52:40 25 4
gpt4 key购买 nike

以下代码在gcc中没有问题。在 VS 2010 Express 中,它无法给出

------ Build started: Project: helium, Configuration: Debug Win32 ------
testvs.cpp
..\..\helium\src\legacy\testvs.cpp(21): error C2664: 'ulink' : cannot convert parameter 1 from 'VP<T>' to 'VP<T> &'
with
[
T=F
]
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

对于任何 visual studio 版本都是一样的,还是仅限于 vs 2010 的问题?如果删除第二个 operator() 定义,问题就会消失

template<typename T> struct S{
void operator()(T&){}
void operator()(){}
};



template <typename T,typename G=typename T::GP,void (S<T>::*f)(T&) =&S<T>::operator() > struct VP{
void fa(){}
};


template<typename T> void ulink( VP<T >& v){}



struct F{
typedef int GP;
};

void f(){

VP<F> vps;
ulink(vps);
}

最佳答案

感谢 Seth Carnegie 确认这是另一个 VS Unresolved 错误。

可能的解决方法

1) 包含在另一个结构中

template<typename L> struct Con{
L& l;
Con(L& pl):l(pl){}
};

template<typename T> void ulink(const Con<VP<T > >& v){
v.l.fa();
}

2) 使模板更通用

template<typename T> void gulink(T& v){
v.fa();
}

关于c++ - 无法将参数 1 从 'VP<T>' 转换为 'VP<T> &',这是另一个 VS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12267274/

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