gpt4 book ai didi

c++ - 尽管使用不存在的成员程序编译

转载 作者:太空狗 更新时间:2023-10-29 23:28:20 26 4
gpt4 key购买 nike

template <typename T>
void list<T>::copyAll(const list &l)
{
if(l.isEmpty()) //if the list-to-copy is empty, we're done
{
first = last = NULL;
}
else
{
node *toFollow = l->yhjfrtydfg;
node *whatever = l.asfqwejfq3fqh23f8hq23r1h23017823r087q1hef;

while(toFollow != NULL)
{
T *newO = new T(*(toFollow->o));
T here = *newO;
insertBack(&here);
toFollow = toFollow->next;
}
}
}

这个程序编译(与程序的其余部分),即使两行node *toFollow = l->yhjfrtydfg;node *whatever = l.asfqwejfq3fqh23f8hq23r1h23017823r087q1hef;显然是疯狂的输入。这很奇怪,因为任何其他错误都被捕获了。有帮助吗?

最佳答案

“依赖名称”(在模板中使用的名称,其含义取决于模板参数)仅在模板实例化时解析,而不是在定义模板时解析。如果您不实例化模板,那么它可以包含任何您喜欢的疯狂名称,只要它在语法上是正确的即可。

如果实例化你的程序将无法编译:

list<int> l;
l.copyAll(l); // ERROR

关于c++ - 尽管使用不存在的成员程序编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13682342/

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