我需要一些帮助来理解以下代码的技术细节,这些代码的目的是委托后端,以及为什么它最终不会在VS中编译但在UNIX命令行中正常工作:
#pragma once
#include <iostream>
#include "Tree.h"
using namespace std;
template <class T>
class SymTab : public Tree<T>
{
using Tree<T> ::Insert;
using Tree<T> ::Lookup;
using Tree<T> ::Remove;
using Tree<T> ::Write;
using Tree<T> ::Set_Debug_On;
using Tree<T> ::Set_Debug_Off;
};
我知道代码以某种方式使用命名空间,但我从未在任何Tree
文件中实际声明。而且,为了构造,我是否正确地假设因为SymTab
类中没有构造函数,它会自动调用超类的构造函数?
最后,此代码在UNIX下编译,但在VS中它会出现以下错误:
SymTab<MyClass>::[function name]: cannot access private member declared in class 'SymTab<MyClass>'
然而一切似乎都是公开的。是什么给了什么?