0
請我想如何使用非類型模板參數指向對象完整的例子,我想這個代碼,但它包含了很多錯誤的非類型模板參數指針對象
class Foo
{
public:
Foo()
{
}
};
template<typename T,Foo* foo>
class TFoo
{
public:
TFoo()
{
}
};
int main()
{
Foo foo;
TFoo<float,&foo> tfoo;
}
編譯時本地(非靜態)變量在內存中並沒有一個固定的位置,這意味着一個指向局部變量的指針(例如你的例子中的'foo')不是一個編譯時常量表達式這是實例化模板所需的。 –
@JoachimPileborg,謝謝我只是想知道是什麼標準n1905下面的代碼的意思是: '模板<類T,字符* P> 類X { // *** X(); X(const char * q) { /**/ } }; X x1; // error:string literal as template-argument char p [] =「Vivisectionist」; X x2; // OK' –
abdulrhmanOmran
該示例代碼將所有變量聲明爲* global *變量,並且在編譯時將全局變量放入特定位置和位置,因此可用作模板參數。 –