gpt4 book ai didi

c++ - 将匿名类传递给私有(private)成员函数

转载 作者:太空狗 更新时间:2023-10-29 20:30:23 25 4
gpt4 key购买 nike

是否可以使用匿名命名空间中定义的类作为私有(private)成员函数中的参数?我还没有找到在 header 中转发声明 AnonymousHelperClass 的方法。

// C.h
class C
{
// ...
private:
void Boing(AnonymousHelperClass &helper);
};

.

// C.cpp
namespace
{
class AnonymousHelperClass
{
// . . .
};
}

C::Boing(AnonymousHelperClass &helper)
{
// ...
}

最佳答案

不能,因为没有办法在头文件中命名类型。

但是,您可以将私有(private)成员函数变成模板:

// C.h
class C
{
public:

void Foo();

private:
template <typename TAnonymousHelper>
void Boing(TAnonymousHelper&);
};

然后在源文件中定义它并与AnonymousHelperClass一起使用:

// C.cpp
#include "C.h"

namespace
{
class AnonymousHelperClass { };
}

template <typename TAnonymousHelper>
void C::Boing(TAnonymousHelper& x) { }

void C::Foo()
{
AnonymousHelperClass x;
Boing(x);
}

尽管如此,重新编写您的逻辑可能更容易,这样私有(private)成员函数就可以成为 .cpp 文件中的命名空间作用域函数。

关于c++ - 将匿名类传递给私有(private)成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7181809/

25 4 0
文章推荐: c# - 提供对象类型时,如何告诉 JSON.NET 将 JArray 反序列化为 List