gpt4 book ai didi

c++ - 在哪里定义 C++ 类成员模板函数和实例化它的仿函数?

转载 作者:可可西里 更新时间:2023-11-01 18:16:35 26 4
gpt4 key购买 nike

我有一个用于小型独立项目的 Foo 类。它在 Foo.h 中有一个类定义,在实现文件 Foo.cpp 中实现了类的成员函数。

第一个问题 - Foo 类的一个成员函数是一个模板方法 Foo::doSomething(),这个方法的实现应该出现在 Foo.h 中的函数声明中是否正确?

Foo::doSomething() 将被实例化的模板参数是两种 Functor 类型之一 - 类 CalcA 和 CalcB。

我应该:

  • (A) 将两个 Functor 类的定义和实现放在一起放在 Foo.cpp 中(其他 Foo 成员函数的实现实际使用它们来调用 Foo::doSomething)。
  • (B)将两个Functor类的定义和实现放在Foo.h中。
  • (C)​​ 我是否应该像处理普通类那样将两个 Functors 的定义和实现拆分到 Foo.h 和 Foo.cpp 中?

最佳答案

一般规则:

如果 foo::doSomething() 在 foo.cpp 之外使用(即如果它是公共(public)的或 protected ,通常),它必须放在标题中。

如果没有,放入 cpp 文件完全没问题,甚至是个好主意(因为它使头文件远离困惑)。

所以,如果仿函数只在 cpp 文件中使用,一定要把模板函数也放在那里。如果这种情况发生变化,以后总是可以重构。

关于c++ - 在哪里定义 C++ 类成员模板函数和实例化它的仿函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4315969/

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