【问题标题】:C++ classes use of double colon [duplicate]C ++类使用双冒号[重复]
【发布时间】:2013-06-26 17:27:47
【问题描述】:

我正在学习 C++。现在我不完全明白这是做什么的

Some_Class::Some_Class {
    etc...
}

我会为自己做一些研究,但我不确定从哪里开始或它叫什么。帮助将不胜感激。

【问题讨论】:

  • :: 是范围解析运算符 - 这意味着 SomeClass 方法在 Some_Class
  • 你需要一本很好的 C++ 入门书。看看这里stackoverflow.com/questions/388242/…
  • @user2444217:为什么第一部分与第二部分不同? Some_ClassSomeClass。是错字吗?如果是,那么您发布的是一个相当无意义的令牌序列。如果它包含参数声明,它可能是构造函数声明。或者它可能是一个嵌套类定义,如果它包含一个 class/struct 关键字。但就目前而言,它完全没有意义。澄清你的问题。

标签: c++


【解决方案1】:

您对scope resolution operator 感到困惑(感谢@Huytard 提供链接)

:: 是范围解析运算符 - 这意味着 SomeClass 方法在 Some_Class 中,给定您的示例 -Some_Class::SomeClass

【讨论】:

    【解决方案2】:

    :: 解析类或命名空间。

    例如

    namespace test1 { int i = 0; }
    cout << test1::i << endl;
    

    class test2 { 
         public: 
         static int i = 0; 
     };
     // after in
    cout << test2::i << endl;
    

    你也可以添加这个:

    using namespace test1;
    cout << i << endl;
    

    【讨论】:

    • 喜欢你的简单方法,有很多反例。谢谢
    【解决方案3】:

    无法说出它是什么,因为您发布的“代码”无效且模棱两可。

    • 它可能是一个以类外方式创建的嵌套类定义。定义嵌套类时,可以立即在里面定义内部类,如

      class Some_Class {   // <- definition of the outer class
        ...
        class SomeClass {  // <- definition of the inner class
          ...
        };
        ...
      };
      

      或者,如果你愿意,你可以只声明里面的嵌套类,而把实际的定义移到外面

      class Some_Class {   // <- definition of the outer class
        ...
        class SomeClass;   // <- declaration of the inner class
        ...
      }; 
      
      class Some_Class::SomeClass { // <- definition of the inner class
        ...
      };
      

      但是,它必须以 class/struct 开头,而您发布的内容中没有。

    • 或者它可以是类Some_Class的成员函数SomeClass的定义。

      class Some_Class {
        ...
        void SomeClass(int i);          // <- declaration of member function
        ...
      };
      
      void Some_Class::SomeClass(int i) // <- definition of member function
      {
        ...
      }
      

      但为此它必须包含返回类型和参数列表。

    • 或者它可以是带有{}-enclosed 初始化器的静态成员的定义

      class Some_Class {
        ...
        static int SomeClass;
        ...
      };
      
      int Some_Class::SomeClass { 42 };
      

      但为此它必须包含静态成员的类型。

    换句话说,无法说出您发布的内容以及您的问题的真正含义。

    【讨论】:

    • 它可以是一个带有初始化的静态成员的定义。不过,可能不是本意。
    • 糟糕,没有。那需要一个类型。
    • 从未想过这是定义内部类的正确方法。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 2016-11-04
    • 1970-01-01
    • 2012-06-18
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多