【发布时间】:2011-09-14 14:36:14
【问题描述】:
template <typename T>
class Node
{...};
int main
{
Node* ptr;
ptr = new Node<int>;
}
将无法编译我必须将指针声明为
Node<int>* ptr;
为什么我还没有创建类的时候声明指针的时候要指定类型,为什么编译器要知道它会指向什么类型。是否不可能创建一个通用指针并在之后决定我要为其分配什么类型。
【问题讨论】:
-
到目前为止它还没有出现在任何答案中,我认为它不值得写一个,但这里有一个重要的一点:
Node不是一种类型。它是一个模板。确实是 class 模板,但只有Node<int>、Node<double>或Node<Node<void> >这样的东西是类型;Node将永远是一个模板,并且只有指向类型的指针。没有指向模板的指针。 -
这是非常重要的一点,它确实应该出现在答案中,而不仅仅是在评论中。
-
正确的语法不应该是
Node<int>* ptr = new Node<int>();吗?我认为()应该在场。 -
@motiveicgeek 这是可选的
标签: c++ class templates pointers declaration