به توان رساندن عدد زمان کامپایل برنامه - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

به توان رساندن عدد زمان کامپایل برنامه

+1 امتیاز

سلام من برای به توان رسوندن عدد زمان کامپایل این کد رو نوشتم ولی این ارور رو میده ::

error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum) instantiating 'class Pow<5, -897>'
     enum { result=Number*Pow<Number,Power-1>::result };
                        

مشکل چیه ؟

#include <iostream>

template<int Number,int Power>
class Pow {
  public:
    enum { result=Number*Pow<Number,Power-1>::result };
};


int main()
{
    Pow<5,3> a;
    std::cout<<a.result;
}

 

سوال شده اسفند 12, 1392  بوسیله ی Mad (امتیاز 245)   10 35 47
دوباره تگ گذاری شد مرداد 28, 1393 بوسیله ی BlueBlade

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

به خاطره اینه که برنامت هیچ وقت شرط پایان رو چک نمی کنه

به این شکل بنویس :

#include <iostream>

template<int Number,int Power>
class Pow {
  public:
    enum { result=Number*Pow<Number,Power-1>::result };
};

template<int Number>
class Pow<Number,0> {
  public:
    enum { result = 1 };
};

int main()
{
    Pow<25,3> a;
    std::cout<<a.result;
}

 

پاسخ داده شده اسفند 12, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد اسفند 12, 1392 بوسیله ی مصطفی ساتکی
...