给出以下代码而不考虑两个类之间的友谊:
class OutSideClass
{
...
public:
int i_pub;
protected:
int i_pro;
private:
int i_pri;
class InSideClass
{
...
public:
int j_pub;
protected:
int j_pro;
private:
int j_pri;
};
};
Run Code Online (Sandbox Code Playgroud)
问题1> OutSideClass是否只能访问InSideClass的公共成员
问题2> InSideClass是否可以访问OutSideClass的所有成员
如果我的理解不正确,请纠正我.
我想将算法实现为派生自纯虚拟类的类,代表特定算法解决的问题类型。
\n\n通用界面如下所示:
\n\ntemplate<typename A, typename B>\nclass ISolutionToProblem\n{\npublic:\n virtual void Init(const A & input, const B & param) = 0;\n virtual const B & ComputeSolution() = 0;\n\n virtual ~ISolutionToProblem() {}\n};\nRun Code Online (Sandbox Code Playgroud)\n\n其实现例如是:
\n\ntemplate<typename T>\nclass MyAlgorithm:\n public ISolutionToProblem<typename MyAlgorithm<T>::WorkData, T>\n{\npublic:\n struct WorkData { /* Stuff using T... */ };\n virtual void Init(const WorkData & input, const T & param);\n virtual const T & ComputeSolution();\n\nvirtual ~MyAlgorithm();\n};\nRun Code Online (Sandbox Code Playgroud)\n\n(更具体地说,问题实际上是路径查找,但我认为这不相关)
\n\n我的问题是继承部分:我使用嵌套结构作为模板参数,无论我如何很好地与编译器交谈,它都会拒绝编译我的代码。
\n\n我可以偷懒,只是将内部结构放在类之外,但如果可能的话,我更希望它整齐地放置在类中。
\n\n