【问题标题】:using keyword with class not allowed? [duplicate]不允许在类中使用关键字? [复制]
【发布时间】:2014-07-29 07:35:01
【问题描述】:

您好,我正在尝试使用using关键字来使用嵌套在另一个类中的类。 上课可以吗?我知道auto 可以做到这一点,并且可以与命名空间、基类和函数一起使用。

我对类的假设不正确吗?

我返回以下错误

 error: ‘CTest’ is not a namespace

下面是源代码

class CB {
  public: 
   void foo();
};

class CTest  { 
  public:   
    void foo();
  private:
    class CA {
      public:
        void foo() ;
    };        
  private:
    class CB b_;

    friend class CTest::CA;
    friend class CB;
};

void CTest::foo() { b_.foo();}
void CTest::CA::foo() { std::cout << "ciao" << std::endl;}
void CB::foo() { using CTest::CA; CA a; a.foo();}   

int main() {
  CTest obj;
  obj.foo();
}

【问题讨论】:

  • 你可以做typedef CTest::CA CA;

标签: c++ using friend


【解决方案1】:

C++11:

void CB::foo() { using CA = CTest::CA; CA a; a.foo();}   

C++98:

void CB::foo() { typedef CTest::CA CA; CA a; a.foo();}   

【讨论】:

  • 啊!我明白了......简单的解决方案我没有在意。非常感谢。
猜你喜欢
  • 2015-04-24
  • 1970-01-01
  • 2014-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2018-02-07
相关资源
最近更新 更多