关于嵌套类的问题[本地和嵌套]

时间:2011-07-14 17:05:24

标签: c++ nested-class

我有一个类A.现在有一个方法就是performSomething()。这基本上以LINE作为输入并检查它是什么类型的LINE并相应地分支并执行预期的任务;

Class A
{
    performSomething( LINE )
    {
      check LINE TYPE
      switch( LINE ) {
      }
    }
};

现在,我被要求引入一个新的内部类来执行此操作。现在,麻烦来了。我完全不确定他的意思是什么,或者这实际上是否有意义!。

如果我需要继续进行,我需要LINE(输入参数)。但是,如果我选择将新类设计为LOCAL类(类内部方法),那么我无法访问它[因为本地自动变量无法访问]; [我也发布了一个问题。)

我不觉得这可以通过使用NESTED类(类内部类)来解决;但是我不太确定它。

他还坚持认为LINE将在嵌套类中可用,所以我不必担心它。但令我头疼的是这条线不是实例变量。这是一个AUtomatic变量。

所以,如果可以通过嵌套类实现这一点,请有人指出我。

谢谢, Moanr Pavan。

1 个答案:

答案 0 :(得分:0)

到目前为止,代码存在很大的错误。

例如,switch很可能是多态的错误方法。在C ++中,我们通常使用virtual函数,但有时我们也可以使用函数重载和/或模板(如果实际类型在编译时已知)。

其次,对于“内在”阶级没有任何理由,也不清楚这意味着什么。您可以在其他类中使用类,甚至可以在函数内部使用类。所以以下语法就​​可以了:

class A
{
    void performSomething( LINE )
    {
        class B {
            static void performSomething(A* that, LINE) { code };
        };
        B::performSomething(this, LINE);
    }
};

你的编译器会接受这个,但我们不得不问:这有什么意义呢?另请注意,如果我们明确传递B::performSomethingA只能访问this的成员。