【发布时间】:2021-04-21 15:06:31
【问题描述】:
考虑以下一段 C++ 代码:
int main(){
MyObject<int> obj;
foo(obj);
}
template <typename T>
void foo(T& objct){
...
}
在 foo 中,objct 的类型将是 MyObject<int>。
我想在foo() 中创建一个变量,其类型是objct 的泛型,在本例中为int。
有没有办法做到这一点?谢谢。
编辑
不幸的是(我认为)我无法重写签名,因为函数foo() 是用不同类型的对象调用的,例如
int main(){
MyObject<int> obj;
MyDifferentObject<int> obj2;
foo(obj);
foo(obj2);
}
【问题讨论】:
-
如果
MyObject遵循良好的做法,它有一个MyObject::value_type或类似的。MyObject是什么? -
template <typename T> void foo(MyObject<T>& objct);? -
@largest-prime-is-463035818 MyObject 没有遵循这种做法啊,它只是我创建的一个类。
-
@jarod42 对不起,你是什么意思?上面的代码运行良好。
-
我的意思是答案中提出的内容。