使用typename时,外部类无法看到内部类
outer class is unable to see inner class when using typename?
有人遇到过这个问题并找到了修复方法吗?还是我做错了什么?如果我尝试访问外部类中的头或尾节点,智能感知会说它们没有成员。很抱歉,如果它有点乱,我已经排除它一段时间了。
编辑:我试过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
};
内部类对外部类的私有成员具有完全访问权限,而不是相反。
不要太在意智能感知说了什么;这通常是有用的,但有时是错误的。编译器是由微软更好的程序员编写的,所以如果你写的编译器可以尝试。
相关文章:
- 在设计 SDK 时,我是否应该在 C++ 头文件中完全隐藏内部类?
- 如何声明由多个线程调用的 C++ DLL 的内部类,而无需导出类
- 从内部类继承
- 如何将枚举类转发声明为模板化类的内部类?
- 从内部类中的方法从包含类调用方法
- 从模板化父类中的派生内部类访问受保护的成员变量
- C++模板类的内部类访问
- 使用类模板的内部类模板专用化模板
- 如何使用包含内部类的类实例有效地从内部类访问成员?
- C++ 如何在外部类中声明的内部类中使用变量
- 在C++中将内部类实现为具有名称空间的独立类有什么好处
- 参数化类的别名(或类型定义)内部类
- 从内部类的析构函数调用虚拟函数
- 如何在没有setter的情况下设置类内部类的成员变量?
- 具有相同名称的方法和内部类(错误:.. 与前面的声明冲突)
- 内部类私有成员访问和封闭的友好性
- 在C++中从内部类对象获取外部类对象
- 在它所属的模板类中使用内部类
- C++命名空间、内部类和运算符解析
- 使用typename时,外部类无法看到内部类