引起我收到下面的代碼
error C1061: compiler limit : blocks nested too deeply
我沒有模板這個錯誤,我有1個微距,3個嵌套的命名空間,以及簡單的平面類,你可以看到下面。
該類包含225個數據成員,每個成員都有一個Get()函數。
當試圖單獨編譯這個類時,它工作正常。
當我使用此對象作爲導出的dll中另一個類的數據成員時發生該錯誤。塊嵌套太深 - 由虛函數
我不想使用動態分配,因爲時間是最重要的。
我需要使用我所有的數據成員(這可以用更少的數量完成,但調試會更困難),但我不明白這個許多數組的聲明如何影響這個嵌套塊。
事情我已經嘗試:
沒有在得到「虛擬」()函數,它編譯罰款。
實際上,一個帶有'virtual'的Get()函數有126個數據成員足以導致這個問題。
沒有類定義中的'NATIVEDLL_API'宏,它編譯好。
當所有的數組都是指針時,它編譯得很好。
MAX_SIZE宏值在這裏似乎不成問題。
Calculator.h
#ifdef CALCULATORDLL_EXPORTS
#define NATIVEDLL_API __declspec(dllexport)
#else
#define NATIVEDLL_API __declspec(dllimport)
#endif
#define MAX_SIZE 1000
class DataHelper
{
public:
DataHelper(){}
virtual double* GetPhase1(){return m_phase1;} // "virtual " cause error C1061
virtual double* GetPhase2(){return m_phase2;} // "virtual " cause error C1061
virtual double* GetPhase3(){return m_phase3;} // "virtual " cause error C1061
... more like those (225 in total)
double m_phase1[MAX_SIZE];
double m_phase2[MAX_SIZE];
double m_phase3[MAX_SIZE];
.... more like those (225 in total)
};
class NATIVEDLL_API Calcaultor
{
DataHelper m_staticData;
}; // the error points to this line
你接收*什麼*錯誤? –
我也在郵件正文中添加了錯誤。它與標題中的相同。 –
你確定你需要那麼多的成員和獲得者?爲什麼不簡單地使用二維數組? –