C++ 定义名称空间::int类
我有点希望名称空间的使用将允许我使用已经存在的类的名称定义类-因此名称空间将是区分它们的方式。 我之所以这样做是因为我的服务器协议有一些数据类型,所以我需要实现它们的类,以及它们到字节的转换。 这就是我所做的,它产生了错误:C++ 定义名称空间::int类,c++,oop,namespaces,C++,Oop,Namespaces,我有点希望名称空间的使用将允许我使用已经存在的类的名称定义类-因此名称空间将是区分它们的方式。 我之所以这样做是因为我的服务器协议有一些数据类型,所以我需要实现它们的类,以及它们到字节的转换。 这就是我所做的,它产生了错误: #ifndef _PACKET_DATA_TYPES #define _PACKET_DATA_TYPES namespace mcp_t { class mcp_t::int { //ERROR: expected an identifier } }
#ifndef _PACKET_DATA_TYPES
#define _PACKET_DATA_TYPES
namespace mcp_t {
class mcp_t::int { //ERROR: expected an identifier
}
}
#endif
如果这是不可能的,名称空间在这里似乎有点无用-无论如何,我将被迫使用mcp_int。在提供类的定义时,不应完全限定类的名称,也不应使用关键字作为类名:
namespace mcp_t {
class my_int {
// ...
};
}
mcp_t::my_int x;
在提供类的定义时,不应完全限定类的名称,也不应使用关键字作为类名:
namespace mcp_t {
class my_int {
// ...
};
}
mcp_t::my_int x;
int是一个关键字,即使在名称空间内,关键字也不能用于命名用户定义的类型
恐怕您必须将您的类型称为int以外的其他名称。int是一个关键字,即使在名称空间内,也不能使用关键字来命名用户定义的类型
恐怕您必须将您的类型称为int以外的类型。这不起作用。int是一个关键字,在C++中不能用作标识符,因为int仍然是一个关键字,即使在命名空间中,我认为使用namespace::int将是合适的解决方法。这不起作用。int是一个关键字,在C++中不能用作标识符,因为int仍然是一个关键字,即使在命名空间中,我认为使用namespace::int将是合适的解决方法。这不适用于普通类std::string,是吗?@TomášZato:std和string都不是关键字。它们和其他任何类一样只是标识符。这不适用于普通类std::string,是吗?@TomášZato:std和string都不是关键字。它们只是标识符,就像其他标识符一样。