c++ - 传递给共享库的模板函数 (c++)

标签 c++ function templates shared

一些思想实验...成分 1:(预编译)共享库中的一个类,它具有一个函数,该函数接受一个指向从 ostream 派生的对象的指针:

void ClassName::SetDefaultStream(std::ostream *stream)

成分 2:

我自己的类派生自 std::ostream,带有一些通用的模板化流运算符:

class MyStream : public std::ostream
{
   public:
      template <typename T> MyStream &operator<<(const T &data)
      {
         std::cout << data;
         return *this;
      }
}

现在,如果我将此类实例化的地址传递给 SetDefaultStream 方法,会发生什么情况?在编译时,编译器不知道什么类型将应用于共享类中的流,所以肯定不会合成任何代码?会不会编译不通过,运行会不会编译后崩溃,电脑会冒烟吗?

最佳答案

你的模板化成员在库中是不可见的,因为它不是基础 std::ostream 的虚拟成员。不会出现任何问题。

关于c++ - 传递给共享库的模板函数 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/602112/

相关文章:

c++ - 如何使用模板在编译时找到 2 个数字的 HCF?

C++ 软件设计选项,类关系

javascript - 如何使用事件监听器动态分配 ID 到表单字段?

c++ - 在#define 中使用双冒号 (::)

c - 将 int 指针传递给函数以在 C 中打印该数组

c++ - 在类中将函数作为参数传递

C++模板类型循环和指向模板实例的非模板指针

java - 使用反射生成的 Java 源代码

c++ - 存储对象以供将来使用(在重新启动程序时)

c++ - 我不能在一行中多次调用 rand() 吗?