【发布时间】:2015-07-27 13:54:19
【问题描述】:
我想在不调用类的情况下使用类中的常量,只需调用常量,如下所示:
头文件(.h)
class myClass{
public:
const static char CHAR_S = '<';
}
源文件 (.cpp)
using namespace myClass;
char separator = CHAR_S; //I want to call the constant without using the class (myClass::CHAR_S)
我该怎么做?
最小完整示例:
class MyClass {
public:
static const char CHAR_S = '<';
};
int main() {
using namespace MyClass;
char separator = CHAR_S;
return 0;
}
导致以下编译器错误:
main.cpp: In function 'int main()':
main.cpp:7:21: error: 'MyClass' is not a namespace-name
using namespace MyClass;
^
main.cpp:7:28: error: expected namespace-name before ';' token
using namespace MyClass;
^
main.cpp:8:22: error: 'CHAR_S' was not declared in this scope
char separator = CHAR_S;
^
main.cpp:8:10: warning: unused variable 'separator' [-Wunused-variable]
char separator = CHAR_S;
^
【问题讨论】:
-
应该是
const static char CHAR_S = '<';而不是"<" -
是的,只是在这个问题上弄错了,在我的代码中是正确的。
-
它也应该是
class而不是Class。 CHAR_S 应该是公开的。 -
请注意,在 C++ 中,
CHAR_S是一个不好的常量名称,因为 ALL_UPPERCASE 几乎总是表示宏。你应该给它一个不同的名字。
标签: c++ class namespaces constants