gpt4 book ai didi

c++ - 实现在匿名命名空间中声明的函数时出现 undefined reference 链接器错误

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:55 25 4
gpt4 key购买 nike

在 .hpp 中的匿名命名空间中定义函数签名时,将该函数的实现放在 .cpp 中是否有效?当我这样做时,我得到一个 undefined reference 错误。

例子:

//hpp
#ifndef __BAR_HPP_
#define __BAR_HPP_
namespace foo
{
namespace
{
struct Bar
{
void func();
};
}
}
#endif

//cpp
using foo;

void Bar::func()
{
//...
}

最佳答案

想想这个:

namespace foo
{
struct Bar
{
void func();
};
}
void Bar::func() { /*impl...*/ }

您的代码无法正常工作的原因与此代码无法正常工作的原因相同——在错误的范围内提供了定义。需要的是:

void foo::Bar::func() { /*impl...*/ }

但是您用什么代替 foo:: 来引用匿名命名空间的名称?它没有。

底线:不可能在匿名命名空间内声明某些内容然后在其他地方定义它,因为不存在用于指定适当范围的机制。

关于c++ - 实现在匿名命名空间中声明的函数时出现 undefined reference 链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5866856/

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