C++ 封闭类的当前对象的概念

C++ 封闭类的当前对象的概念,c++,c++11,C++,C++11,我正在学习比亚恩的书,寻找班级的成员类型。 嵌套类可以访问其封闭类的成员,甚至可以访问私有成员,就像 成员函数有,但没有封闭类的当前对象的概念。 但是为什么我在构建下面的代码时没有得到任何错误呢 有一条规则规定,如果未使用类模板的成员,则不会实例化该成员。这适用于你的情况 您没有调用Node_函数,因此编译器没有实例化它,因此它没有发现问题。函数仍然会被解析以进行正确的语法检查——它不会试图知道什么是正确的,因为它可能是一个变量、一个函数名或任何东西 调用时出现错误。有一条规则规定,如果未使用类

我正在学习比亚恩的书,寻找班级的成员类型。 嵌套类可以访问其封闭类的成员,甚至可以访问私有成员,就像 成员函数有,但没有封闭类的当前对象的概念。 但是为什么我在构建下面的代码时没有得到任何错误呢


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

您没有调用Node_函数,因此编译器没有实例化它,因此它没有发现问题。函数仍然会被解析以进行正确的语法检查——它不会试图知道什么是正确的,因为它可能是一个变量、一个函数名或任何东西


调用时出现错误。

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

您没有调用Node_函数,因此编译器没有实例化它,因此它没有发现问题。函数仍然会被解析以进行正确的语法检查——它不会试图知道什么是正确的,因为它可能是一个变量、一个函数名或任何东西


调用时出现错误。

您没有尝试使用该函数模板,因此不会发生任何事情

如果您使用调试并提供了一个调用此有问题代码的主函数,那么您就会看到所查找的错误消息


-您尚未尝试使用该函数模板,因此不会发生任何事情

如果您使用调试并提供了一个调用此有问题代码的主函数,那么您就会看到所查找的错误消息


-你需要在某处调用Node_函数。你需要在某处调用Node_函数。啊,谢谢。你建议我使用单元测试之类的,我已经向@Nawaz提出了这个要求。感谢you@VitoCarleone:不是真正的单元测试,尽管测试用例是一种类似的野兽。当你遇到这样的问题时,一定要用一个简短的例子来测试它,因为你就快到了!它实际上运行的是你正在测试的函数,这是你丢失的部分。仅对非模板进行语法检查和语义检查并不总是足够的。啊,谢谢。你建议我使用单元测试之类的,我已经向@Nawaz提出了这个要求。感谢you@VitoCarleone:不是真正的单元测试,尽管测试用例是一种类似的野兽。当你遇到这样的问题时,一定要用一个简短的例子来测试它,因为你就快到了!它实际上运行的是你正在测试的函数,这是你丢失的部分。仅对非模板进行语法检查和语义检查并不总是足够的。@纳瓦兹:为什么要删除该示例?很好!我现在偷了,因为你显然不想it@LightnessRacesinOrbit字体这么多编辑之间有竞争。它现在在那里D@Nawaz:不太好。我刚从你的URL中删除了无效字符,然后你又添加了它们,然后我又删除了它们。然后您出于某种原因取出了整个链接。@LightnessRacesinOrbit:由于并发编辑,链接因无效字符而无法工作。@Nawaz:。。。我把它拆了两次!该链接在您删除时是正确的。刷新速度更快!:@纳瓦兹:你为什么要删除这个例子?很好!我现在偷了,因为你显然不想it@LightnessRacesinOrbit字体这么多编辑之间有竞争。它现在在那里D@Nawaz:不太好。我刚从你的URL中删除了无效字符,然后你又添加了它们,然后我又删除了它们。然后您出于某种原因取出了整个链接。@LightnessRacesinOrbit:由于并发编辑,链接因无效字符而无法工作。@Nawaz:。。。我把它拆了两次!该链接在您删除时是正确的。刷新速度更快!:
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"
}