你好我想知道这是什么意思,这是什么意思?
fakecalss f1("getName", Type::STRING, AC::PUBLIC);
我知道它正在调用伪类的构造函数,但Type :: STRING是什么意思?这是如何实现的?
答案 0 :(得分:2)
Type
和AC
是任何命名的范围(没有看到它们的声明,不可能多说一些;每个可能是命名空间,类类型或枚举类,或者可能是具有相关范围的类型的typedef)。 STRING
是名为Type
的作用域中的名称(可能是常量),PUBLIC
是名为AC
的作用域中的名称(可能是常量)。< / p>
当然,所有这一切都假设这些都不是宏。
一些可能性都会使Type::STRING
合法代码(具有不同的语义,出于说明目的,我还添加了另一个值Type::INTEGER
):
命名空间中的常规常量:
namespace Type
{
int const STRING = 0;
int const INTEGER = 1;
}
s命名空间中的正常枚举:
namespace Type
{
enum foo { STRING, INTEGER };
}
结构中的静态常量:
struct Type
{
static int const STRING = 0;
static int const INTEGER = 1;
};
结构中的正常枚举:
struct Type
{
enum { STRING, INTEGER };
};
仅限C ++ 11及更高版本:枚举类:
enum class Type { STRING, INTEGER };
请注意,此列表并非详尽无遗。