标题:命名空间嵌套中定义函数,但是形参类型无法找到命名空间中定义的类,请问这 ...
只看楼主
wolfcan
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2021-12-9
结帖率:87.5%
已结贴  问题点数:10 回复次数:2 
命名空间嵌套中定义函数,但是形参类型无法找到命名空间中定义的类,请问这是怎么回事?
刚学习C++,遇到各种让我感觉莫名其妙的问题,请教大家解答疑惑。不知道我描述的是否清晰,请各位大佬不吝赐教。非常感谢。

说明:
用的是visual studio 2019
//CamParams.h 头文件包含CamParams类的定义,CamParams类的定义在命名空间SL中
//相应的其他头文件也包含了一些相关类,这些类或函数都是在命名空间SL中定义的
现在我想在SL命名空间中再定义一个命名空间叫做internal,然后在里面定义一个函数叫做frame_process,但是当我写形参列表的时候,有些类并不能自动提示。
其中一个参数是CamParams 类的引用,但是当我写这个参数的时候,并不能自动提示以及补全,我做了以下尝试,有不同的结果。


1.当我的代码如下两种情况时(其一是没有加函数体大括号,其二是加了函数体大括号),参数列表中完全不会提示CamParams这个类,我是想将参数写成 const CamParams cp
void frame_process(const )//第一种情况
void frame_process(const ){}//第二种情况

2.当我的代码如下情况时,也即我加上了SL命名空间,但是没有函数体大括号,此时仍然没有CamParams类的提示,但是有其他类的提示,比如FramePyramid,InSegConfig等类的提示,这些头文件位置和CamParams类是一样的,也都定义在SL命名空间中。也即自动提示的内容不全
    void frame_process(const SL::)//第三种情况

3.当我的代码如下情况时,也即我加上了SL命名空间,同时加上函数体大括号以后,接下来有了CamParams的提示,也能自动补全。
    void frame_process(const SL::CamParams cp){}//第四种情况
   

我的疑问,第一,我这些头文件都有包含,而且这些类都是在SL命名空间中定义的,为什么我命名参数的时候还要加上SL::,因为我看到别人的代码就不用加这个命名空间。
第二,为什么函数体大括号没有的时候仅能显示部分内容,而加上大括号后,就可以显示CamParams类的选项了。
不知道我描述的是否清晰,请各位大佬不吝赐教。非常感谢。


以下是整体代码:
程序代码:
#include "CamParams.h" 
#include "Surfel.h"
#include "FramePyramid.h"
#include "InSegConfig.h"
...
namespace SL
{
    namespace internal
    {
    void frame_process(const )//第一种情况
    void frame_process(const ){}//第二种情况
    void frame_process(const SL::)//第三种情况
    void frame_process(const SL::CamParams cp){}//第四种情况

    }

}





[此贴子已经被作者于2021-12-11 23:00编辑过]

搜索更多相关主题的帖子: 函数 定义 void 命名空间 const 
2021-12-11 22:53
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
都没听懂,而且什么提示不提示的,跟C++无关,跟编译器也无关,估计你只能问VC的作者了。
我猜VC作者也不会回答你,智能提示本身就是个破烂辅助,大问题还多得一塌糊涂,你这种小问题它看都不看。
2021-12-12 19:51
wolfcan
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2021-12-9
得分:0 
回复 2楼 rjsp
谢谢版主,内容确实有点多,一下子不好理解。本来用截图表示,可是发现咱们论坛不能插入图片。

问题可以再简单描述一下,比如一个头文件我定义了两个类,在当前文件包含了这个头文件,但是我在当前文件写代码的时候,其中一个类可以自动提示,并通过tab补全,另外一个就压根没有提示,按理说两个类所处的环境都一样。
2021-12-12 21:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507840-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022356 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved