使用typename时,外部类无法看到内部类

outer class is unable to see inner class when using typename?

本文关键字:内部类 typename 外部 使用      更新时间:2023-10-16

有人遇到过这个问题并找到了修复方法吗?还是我做错了什么?如果我尝试访问外部类中的头或尾节点,智能感知会说它们没有成员。很抱歉,如果它有点乱,我已经排除它一段时间了。

编辑:我试过MS VS 2010, &2012

#pragma once
#include <string>
using namespace std;
template <typename ItemType>
class LinkedArrayList
{
public:
    /*************************************
            Inner Class
    *************************************/
    class Node 
    {
    public:
        Node(void){};
        Node(Node* pNode, Node* nNode, int limit)
        {
            prevNode = pNode;
            nextNode = nNode;
            capacity = limit;
            size = 0;
            if(capacity != 0)
                items = new ItemType[capacity];
        };
        ~Node(void)
        { 
            delete(items);
        };
        Node* nextNode;
        Node* prevNode;
        ItemType* items;
        int size;
        int capacity;
    private:
    };
    /*************************************
            Declarations
    *************************************/
    int numOfNodes;
    int arrayCapacity;
    Node* head;
    Node* tail;
    /*************************************
            Functions
    *************************************/
    LinkedArrayList(void)
    {
    };
    LinkedArrayList(int capacity)
    {
        head = new Node(NULL, NULL, 0);
        tail = new Node(NULL, NULL, 0);
        arrayCapacity = capacity;
        numOfNodes = 0;
    };
    ~LinkedArrayList(void)
    {
    };

当我输入head->tail->时左下角提示显示智能感知无成员可用

class的成员默认为private。要访问它们,请使用关键字public

class X
{
public:
    X() {}
    ~X() {}
    // rest of the public stuff
private:
    // private stuff
};

内部类对外部类的私有成员具有完全访问权限,而不是相反。

不要太在意智能感知说了什么;这通常是有用的,但有时是错误的。编译器是由微软更好的程序员编写的,所以如果你写的编译器可以尝试。