在命名空间的结构中使用静态函数时出错。 (c++)
Error in using static function in struct in namespace. (c++)
我有这段代码 我在命名空间中创建了带有静态函数的结构:
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);
^
这是为什么?
将其更改为:Hashing::Hash::init(12);
。静态成员函数不与任何对象关联。
使用 ::
调用静态方法,例如 Hash::init()
。
使用.
用于成员函数和变量。 class Hash
不是成员,但 Hash h
是。
.
应该是::
。
编辑代码:
#include <iostream>
namespace Hashing{
struct Hash{
static void print(int num){
std::cout<<num<<"\n";
}
};
}
int main() {
Hashing::Hash::print(12);
}
我有这段代码 我在命名空间中创建了带有静态函数的结构:
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);
^
这是为什么?
将其更改为:Hashing::Hash::init(12);
。静态成员函数不与任何对象关联。
使用 ::
调用静态方法,例如 Hash::init()
。
使用.
用于成员函数和变量。 class Hash
不是成员,但 Hash h
是。
.
应该是::
。
编辑代码:
#include <iostream>
namespace Hashing{
struct Hash{
static void print(int num){
std::cout<<num<<"\n";
}
};
}
int main() {
Hashing::Hash::print(12);
}