gpt4 book ai didi

c++ - 从模板参数派生并调用其复制构造函数

转载 作者:太空狗 更新时间:2023-10-29 23:47:17 26 4
gpt4 key购买 nike

请考虑以下代码:

template<class basic_ios_type>
class basic_ios_adaptor;

template<template<typename, class> class basic_ios_type, typename char_type, class traits_type>
class basic_ios_adaptor<basic_ios_type<char_type, traits_type>>
: public basic_ios_type<char_type, traits_type>
{
public:
typedef basic_ios_type<char_type, traits_type> base_type;

basic_ios_adaptor(base_type const& other)
: base_type(other)
{
}
};

唯一可用的构造函数是复制构造函数,它采用对基类型的 const 引用。用法示例:

std::ofstream                    x(std::ofstream(""));  // ok
basic_ios_adaptor<std::ofstream> y(std::ofstream("")); // error

视觉 C++:

'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'

英特尔:

no instance of constructor "std::basic_ofstream<_Elem, _Traits>::basic_ofstream [with _Elem=char, _Traits=std::char_traits]" matches the argument list

有人可以向我解释为什么这不起作用吗?

最佳答案

您不能复制流,因为它们的复制构造函数是私有(private)的(或者更具体地说,来自 basic_ios 的复制构造函数)。

另见 this question .

关于c++ - 从模板参数派生并调用其复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6397223/

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