【发布时间】:2019-10-25 07:21:06
【问题描述】:
基本上,命名空间np中定义了一个类Foo:
//Foo.h
namespace np {
class Foo {
public:
static void static_member();
...
}
...
}
我想在其他来源中引用静态成员,比如src.cc
//src.cc
#include "Foo.h"
using np::Foo::static_member;
...
static_member()
...
启动编译器后报错:
error: using declaration cannot refer to class member
但是,当我将线路更改为 np::Foo::static_member() 时,它起作用了。那么,省略无休止的作用域前缀的正确方法是什么?
【问题讨论】:
-
没有办法,除非
Foo是命名空间,而不是class(或struct)类型。该函数的调用也需要在另一个函数中。np::Foo::static_member()可以在np::Foo的成员函数中不合格地调用
标签: c++ namespaces static-methods