C++ C++;包括、类名称空间和类实例化

C++ C++;包括、类名称空间和类实例化,c++,class,namespaces,C++,Class,Namespaces,我一直在编写一些代码,试图对某种出租车服务进行建模,但我遇到了一些问题 我有一个类RunServer,它查看用户给出的命令的状态(src::control::Global::stat_commandPath),并在对该输入执行操作之前,根据这些命令请求额外的输入 问题是我得到了一个“error:expected type specifier”(GCC-7.3.0,C++11),它看起来可能与我如何给类命名有关。如果从src/Vehicle/Car.h中删除名称空间声明,则此问题停止发生 这应该是

我一直在编写一些代码,试图对某种出租车服务进行建模,但我遇到了一些问题

我有一个类RunServer,它查看用户给出的命令的状态(src::control::Global::stat_commandPath),并在对该输入执行操作之前,根据这些命令请求额外的输入

问题是我得到了一个“error:expected type specifier”(GCC-7.3.0,C++11),它看起来可能与我如何给类命名有关。如果从src/Vehicle/Car.h中删除名称空间声明,则此问题停止发生

这应该是该问题的所有相关代码。抱歉,内容太多了,我已经截断了所有看起来没有影响的内容。问题在于src/control/RunServer.h第66、70和74行src/vehicle/Pick.hsrc/vehicle/Van.h具有与src/vehicle/Car.h相同的结构

src/control/Global.h

\ifndef包含\u src\u控制\u全局\u h
#定义包含的\u src\u控制\u全局\u h
#包括
#包括“./vehicle/vehicle.h”
名称空间src{
命名空间控件{
班级总决赛
{
虚拟void instantiable()=0;
私人:
静态尺寸
统计车辆射线长度;
静态src::车辆
**统计车辆射线;
公众:
静态std::string
stat_commandPath,
统计数据;
公众:
静态布尔
//如果添加失败,则删除指针参数。
添加车辆(
src::车辆*
),
汽车(
字符串
),
拆下车辆(
字符串
);
静态尺寸
获取车辆装载(),
定位车辆(
字符串
);
静态src::车辆
**获取车辆();
};
}}
#恩迪夫
src/control/RunServer.cpp

#包括
#包括//退出()
#包括
#包括
#包括“../../lib/StringTools.h”
#包括“./vehicle/Car.h”
#包括“./车辆/皮卡车.h”
#包括“./vehicle/Van.h”
#包括“./车辆/车辆类型.h”
#包括“./person/Driver.h”
#包括“./人/乘客.h”
#包括“Global.h”
#包括“RunServer.h”
内联布尔
src::control::RunServer::navigation(
std::字符串输入)
{
如果(输入=“返回”)
{
src::control::Global::stat_commandPath.pop_back();
返回true;
}
如果(输入=“退出”)
{
出口(0);
返回true;
}
返回false;
}
无效的
src::control::RunServer::run()
{
std::字符串输入;
//“0”~创建。。。
//“00”~创建>车辆。。。
//“000”~创建>车辆>汽车
//“001”~创建>车辆>拾取
//“002”~创建>车辆>货车
//“01”~创建>个人。。。
//“010”~创建>人员>驱动程序
//“011”~创建>人员>乘客
//“1”~摧毁。。。
//“10”~摧毁>车辆
//“11”~摧毁>乘客
//“2”~打印
如果(src::control::Global::stat|u commandPath==“000”| src::control::Global::stat|u commandPath==“001”| src::control::Global::stat|u commandPath==“002”)
{
//创建>车辆>(汽车|皮卡|货车)。

这是完全错误的:

        static bool
            // Deletes the pointer argument if adding fails.
            add_vehicle(
                src::Vehicle *
            ),
            exists_vehicle(
                std::string
            ),
            remove_vehicle(
                std::string
            );
你想在这里完成什么?这不是应该是3个独立的原型吗

        static bool
            // Deletes the pointer argument if adding fails.
            add_vehicle(
                src::Vehicle *
            );
        static bool exists_vehicle(
                std::string
            );
        static bool remove_vehicle(
                std::string
            );

问题似乎与大小写有关。似乎名称空间查找不区分大小写,而名称空间声明区分大小写。将
src::vehicle::Car
的名称空间更改为
src::avehichile::Car
解决了这个问题。

应用程序域中的嵌套名称空间通常是个坏主意,尤其是对于初学者来说。这样做有什么意义E>命名空间SRC <代码>命名空间SRC/<代码>,是指文件位于SRC/…目录中。我习惯于HAXE,所以我试图效仿它,这对于C++代码来说似乎不是一件好事。C++中的类型/类/命名空间名称和目录或文件名之间没有关系。好吧,我将尝试UNSC。那么,这不是一个好主意——只是去掉命名空间。你真的读过C++教科书吗?我认为你可以用逗号分隔它们来声明多个函数/变量。我以前看到过变量,但是这是一个很差的练习。那么你可以给我们更多的细节,比如错误和它的来源(即行)。该死,我以为我忘了什么!我现在就把它放进去。@0x.dummyVar不,你不能声明多个用逗号分隔的函数。是的,这可能是错误的形式,我会更改它。