gpt4 book ai didi

c++ - 封闭类的当前对象的概念

转载 作者:搜寻专家 更新时间:2023-10-31 01:06:33 25 4
gpt4 key购买 nike

我正在研究 Bjarne 的书并寻找 Member Types of Class。
嵌套类可以访问其封闭类的成员,甚至可以访问私有(private)成员(就像成员函数有),但不知道封闭类的当前对象。
但为什么我在构建以下代码时没有收到任何错误。

template<typename T>
class Tree
{
private:
using value_type = T;

class Node
{
private:
Node* right;
value_type value;
public:
void Node_Function(Tree*);
};
Node* top;

public:
void X_f()
{

}
};

template<typename T>
void Tree<T>::Node::Node_Function(Tree* p)
{
top = right; //I suppose to get error here like "error :
// no object of type Tree specified"
}

最佳答案

有一条规则规定,如果未使用类模板的成员,则不会实例化该成员。这适用于您的情况。

您没有调用 Node_Function(),因此编译器不会实例化它,因此它看不到问题。该函数仍会被解析以检查语法是否正确——它不会试图知道什么是 right,因为它可能是一个变量、一个函数名,任何东西。

Here is a demo这会在调用时出错。

关于c++ - 封闭类的当前对象的概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20548105/

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