我試圖在編譯時用模板找到最大公約數。請看下面的代碼:在編譯時查找最大公約數
#include "stdafx.h"
#include <iostream>
template<int N, int M, int K>
class A{
public:
static const int a=A<M,K,M%K>::a;
};
template<int N, int M>
class A<N,M,0>{
public:
static const int a=M;
};
int _tmain(int argc, _TCHAR* argv[])
{
std::cout << A<11,13,11>::a;
return 0;
}
此代碼的工作,但如果我試着寫
#include "stdafx.h"
#include <iostream>
template<int N, int M>
class GCD{
public:
static const int a=A<N,M,N%M>::a;
};
template<int N, int M, int K>
class A{
public:
static const int a=A<M,K,M%K>::a;
};
template<int N, int M>
class A<N,M,0>{
public:
static const int a=M;
};
int _tmain(int argc, _TCHAR* argv[])
{
std::cout << GCD<11,13>::a;
return 0;
}
我崩潰錯誤C2059「不變」。
爲什麼這段代碼不起作用?
你的問題是? –
我的問題是爲什麼它沒有工作?爲什麼我會崩潰? –
什麼是確切的錯誤信息,你知道什麼行嗎? – interjay