c – 在实例化模板时无法访问类错误中声明的私有成员
发布时间:2020-12-16 05:29:28 所属栏目:百科 来源:网络整理
导读:我的代码如下 template typename Tclass name{public: name() : h_(0){} template typename U operator nameU() { nameU u; u.h_ = h_; return u; }private: int h_;};int main(void){ nameint a; namedouble b = a; return 0;} 我得到的错误是int name doub
我的代码如下
template <typename T> class name { public: name() : h_(0){} template <typename U> operator name<U>() { name<U> u; u.h_ = h_; return u; } private: int h_; }; int main(void) { name<int> a; name<double> b = a; return 0; } 我得到的错误是int name< double> :: h_是private.如何修复错误? 解决方法
命名< INT>和名称< double>是不同的实例,因此实际上是不同的类.默认情况下,他们的私人成员无法共享.你需要命名< T>所有其他名字的朋友.
template <typename T> class name { public: name() : h_(0){} template <typename U> operator name<U>() { name<U> u; u.h_ = h_; return u; } private: int h_; template <typename> // <-- friend class name; // <-- }; int main(void) { name<int> a; name<double> b = a; return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ruby-on-rails – 如何使用rails 3在cookie中存储哈希值
- Design Pattern Singleton 单一模式
- c – C预处理器和操作顺序
- ruby-on-rails – rails app无法启动:: 29:在`require’中
- macos – Swift抓住“我的卡”CNContact
- 实际工作中ORA-01578: ORACLE data block corrupted遇到问题
- iphone – 在Xcode中删除/删除组
- 《大掌门》欧阳刘彬--基于Cocos2d-x引擎开发经验分享
- flashback database.
- ruby-on-rails – Bundler:读取服务器证书B:证书验证失败