gpt4 book ai didi

c++ - 将类型参数传递给自引用指针

转载 作者:可可西里 更新时间:2023-11-01 16:28:34 25 4
gpt4 key购买 nike

template <class T>
class Node {
private:
T m_value;
//Node* m_ptr; //(1)
//Node<T>* m_ptr; //(2)
};

谁能解释一下上面两种说法(1)和(2)的区别是什么?这两个语句似乎都可以编译,但我似乎无法找到 ISO C++ 对它们的说明。

最佳答案

它们是同一件事,因为您在模板中声明了指针,因此当您创建 Node 的实例时,编译器知道 T 是什么。如果可以推导出模板,则不必指定模板的类型,例如来自参数类型,或者在本例中来自指针所属的模板实例。

template <class T>
class Node {
public:
T m_value;
Node* m_ptr; //(1)
//Node<T>* m_ptr; //(2)
};

int main()
{
Node<float> test;
test.m_ptr = new Node<float>{}; // valid
test.m_ptr = new Node<bool>{}; // invalid - triggers compiler error
auto val = test.m_ptr->m_value; // val will be of float type
}

关于c++ - 将类型参数传递给自引用指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49707445/

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