簡體   English   中英

C ++是否提供了一種在沒有范圍解析運算符的情況下訪問類中的類的方法?

[英]Does C++ provide a way to access a class within a class without the scope resolution operator?

C ++是否提供了一種方法來聲明一個類中具有類類型的對象(例如下面示例中的foo_class::bar_class_in_class ),而不必使用范圍解析運算符,就像它對命名空間中的類所做的那樣(例如foo_namespace::bar_class_in_namespace在下面的例子中)?

  namespace foo_namespace {
      class bar_class_in_namespace {
      };

  }

  class foo_class {
  public:
      class bar_class_in_class {
      };
  };


  int main() {
      using namespace foo_namespace;
      bar_class_in_namespace bar_0;

      // Can I access bar_class_in_class without having to use the
      // the scope resolution operator?
      foo_class::bar_class_in_class bar_1;
  }

這個問題與我們在命名空間中的方式別名一樣可以嗎? ,這個問題明確地詢問了一個班級中的一個課程的細微差別。

是的,C ++提供了一種訪問類型的方法。 你需要的是一個類型別名。 運用

using bar_class_in_class = foo_class::bar_class_in_class;

允許您使用bar_class_in_class代替foo_class::bar_class_in_class 這是作用域,所以如果你在main執行它,你只能在main看到別名


請注意,您還可以“更改內部類型的名稱”

using my_type = foo_class::bar_class_in_class;

做與上面相同的事情,但你會使用my_type作為類型名稱。 這可以是一個很好的方便。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM