c++ - 将 const 引用传递给使用自定义对象的模板类

标签 c++ templates

我有一个正在创建的模板类,它接收自定义对象。它看起来有点像这样。

template<typename T1,typename T2>
class myClass
{
public:
    myClass(const T1 &param1, const T2 &param2);
}



template<typename T1, typename T2>
myClass<T1,T2>::
myClass
(const T1 &param1, const T2 &param2)
{
    T1.customFunction(); //doesn't compile
}

所以我希望无论何时使用这个模板类,使用它的人都有责任确保类 T1 有一个名为 customFunction() 的函数。很公平,问题是 customFunction 必须在编译时保证为 const,因为它是在常量参数 (param1) 上调用的,但如果 T1 本质上是一个虚拟类,这怎么可能呢?

最佳答案

首先应该是

param1.customFunction();

因为你用参数对象调用它,而不是类型。

其次,您不必担心。每当您构造一个 myClass 对象时,编译器都会检查您传递的参数是否属于成员函数存在且可调用的类型。

关于c++ - 将 const 引用传递给使用自定义对象的模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10959989/

相关文章:

c++ - 运算符(operator)填写的模板

c++ - 传递可变参数时保留引用

c++ - 重新平衡二叉搜索树的函数

php 代码应该将我的数据库中的内容打印到模板中

c++ - 扣除指南的尾随返回类型不是特化

c++ - 如何在MFC中的CArray中使用CArray?

c++ - 如何分析基于 C++ STL 的程序以检测 STL 互斥锁?

c++ - 如何使用模板继承和组件

c++ - "{" token 错误之前的预期类名

c++ - 模板代码膨胀是否仍然是最新编译器/链接器的问题