在命名空间的struct中使用静态函数时出错。 (c ++)

问题描述 投票:0回答:3

我在这里有这段代码,我在名称空间中使用静态函数创建了结构:

namespace Hashing {
    ///...
    struct Hash {
        ///...
        static void init(int n, const ull m = 31ull) {
             ///...
        }
    };
    ///...
}

我在main中使用以下代码:

int main() {
    ///...
    Hashing::Hash.init(12);
    ///...
}

发生错误:

error: expected unqualified-id before '.' token
  Hashing::Hash.init(12);
               ^

为什么?

c++ oop static namespaces
3个回答
0
投票

将其更改为:Hashing::Hash::init(12);。静态成员函数不与任何对象关联。


0
投票

::调用静态方法,例如Hash::init()

使用.用于成员函数和变量。类Hash不是成员,但是Hash h将是成员。


0
投票

.应该是::

编辑代码:

#include <iostream>
namespace Hashing{
  struct Hash{
    static void print(int num){
      std::cout<<num<<"\n";
    }
  };
}
int main() {
  Hashing::Hash::print(12);
}

© www.soinside.com 2019 - 2024. All rights reserved.