gpt4 book ai didi

C++ 限制泛型中的类型(和指针问题)

转载 作者:行者123 更新时间:2023-11-28 02:10:49 27 4
gpt4 key购买 nike

这个问题可能更多地与 C++ 在编译时如何处理指针有关,但这是在学习泛型时出现的。我有以下代码(在 Visual Studio 中没有出现任何错误):

class myClass { int x; };

template<typename T>
int myFunc(T obj)
{
return obj.someMethod();
}

int main(int argc, char *argv[])
{
myClass obj = myClass();
myFunc(obj);
}

显然,“myClass”没有 someMethod(),但 Visual Studio 没有给我任何错误。但是,当我将 myFunc 更改为:

template<typename T>
int myFunc(T *obj)
{
return obj->someMethod();
}

我确实遇到了错误,我认为这是因为编译器检查 myClass 没有 someMethod()。为什么第一段代码没有出现同样的错误?

最佳答案

对于我来说,g++ 和 clang++ 使用指针传递值和引用传递都失败了clang++ 是版本 3.6.1g++ 是 4.9.2 版本

如果您可以在 visual studio 上重现它,请在他们的编译器上提交错误。

关于C++ 限制泛型中的类型(和指针问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35788098/

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