gpt4 book ai didi

c++ - 如果返回类型是 C++ 中的对象,我们可以在函数定义中使用绝对命名空间吗?

转载 作者:太空狗 更新时间:2023-10-29 23:27:32 26 4
gpt4 key购买 nike

让我们考虑一个函数 bar在命名空间 foo 中声明返回 std::vector< float > (但也适用于其他对象)。

// header.h
#include <vector>

namespace foo
{
::std::vector< float > bar();
}

使用相对命名空间编译它的定义是可行的。

#include "header.h"

::std::vector< float > foo::bar()
{
}

但是,使用绝对命名空间编译它的定义是行不通的。

#include "header.h"

::std::vector< float > ::foo::bar()
{
}

GCC 的返回错误是

function.cpp:3:26: error: ‘foo’ in ‘class std::vector<float>’ does not name a type
::std::vector< float > ::foo::bar()

事实证明,命名空间中允许有空格,所以,::std::vector< float > ::foo::bar()相当于::std::vector< float >::foo::bar() .当返回类型是对象时,如何在函数定义中使用绝对命名空间?

最佳答案

::std::vector< float > (::foo::bar)()
{
// stuff
}

关于c++ - 如果返回类型是 C++ 中的对象,我们可以在函数定义中使用绝对命名空间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51427468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com