相关疑难解决方法(0)

C++嵌套类可访问性

给出以下代码而不考虑两个类之间的友谊:

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的所有成员

如果我的理解不正确,请纠正我.

c++ oop

26
推荐指数
1
解决办法
2万
查看次数

C++中嵌套类作为父类的模板参数

我想将算法实现为派生自纯虚拟类的类,代表特定算法解决的问题类型。

\n\n

通用界面如下所示:

\n\n
template<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};\n
Run Code Online (Sandbox Code Playgroud)\n\n

其实现例如是:

\n\n
template<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};\n
Run Code Online (Sandbox Code Playgroud)\n\n

(更具体地说,问题实际上是路径查找,但我认为这不相关)

\n\n

我的问题是继承部分:我使用嵌套结构作为模板参数,无论我如何很好地与编译器交谈,它都会拒绝编译我的代码。

\n\n

我可以偷懒,只是将内部结构放在类之外,但如果可能的话,我更希望它整齐地放置在类中。

\n\n
    \n
  1. 那么我想做的事情实际上是可能的吗(在 C++98 中)?
  2. \n
  3. 如果是的话我该怎么写呢?(如果你让我理解为什么语法不接受上面的形式,那就加分了)
  4. \n …

c++ syntax inheritance templates nested-class

5
推荐指数
1
解决办法
3465
查看次数

标签 统计

c++ ×2

inheritance ×1

nested-class ×1

oop ×1

syntax ×1

templates ×1