太上道祖330 2022-07-23 16:23 采纳率: 100%
浏览 72
已结题

关于C++编译器处理过度封装的问题

问题遇到的现象和发生背景

但是当我试图用类模板实现一个过度封装的数据时却发现编译失败

问题相关代码,请勿粘贴截图
#include<iostream>
using namespace std;
template <typename T>class some {
public:
    T t;
    some(T tt):t(tt) {}
    friend ostream& operator<<(ostream& os, some s)
    {
        os << s.t;
        return os;
    }
};
template<typename T>
void it(T t);
int i = 1;
int main()
{
    int a = 0;
    it(a);
}
template<typename T>
void it(T t)
{
    if (i > 0) {
        i--;
        cout << t;
        some<T> s(t);
        it(s);
    }
    return;
}


运行结果及报错内容

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C1202 递归类型或函数依赖项上下文太复杂

我的解答思路和尝试过的方法

尝试把封装的次数降低,但是即使只要一次封装,这个用来进一步封装的函数都会报错

我想要达到的结果

至少让它编译通过吧,最好同时回答一下“编译器会不会对简单的过度封装的数据进行优化”这个问题

  • 写回答

5条回答 默认 最新

  • [PE]经典八炮 2022-07-23 16:49
    关注

    模板参数不是得编译期间确定吗,你这个编译期间又没法确定递归层数,就无法确定模板参数

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 7月31日
  • 已采纳回答 7月23日
  • 修改了问题 7月23日
  • 创建了问题 7月23日

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 如何将下列的“无限压缩存储器”设计出来
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口