2017-03-29 19 views
0

我有一個Mat_<long double>矩陣。我需要long double執行大矩陣的乘法(10x4096兩者)。但問題是傳遞以這種方式運行:func(Mat first)使得雖然我需要16個函數中的元素大小爲8個字節。但是func(Mat_<long double> first)導致鏈接器對函數的未定義引用。所以問題是我怎麼能通過Mat_<long double>功能?如何通過Mat_ <long double>函數?

+0

你確定'long double'是16字節嗎? – Miki

+0

我不同意@ tobi303。在ROT13的一次通過之後,它就不那麼容易理解了。奇怪的是第二輪似乎恢復了......我不知道那是怎麼回事。 – user4581301

+0

@Tehada:檢查sizeof(long double)來知道它在你的實現上有多少位。這不是標準尺寸。 –

回答

2

您需要更改函數的原型傳遞diferent參數類型:

原型:

func(Mat_<long double> first); 

定義:

func(Mat_<long double> first) 
{ 
.. 
} 

用法:

Mat_<long double> example; 
func(example); 

注:

  • 小心使用long double,是不是很方便攜帶,爲different compilers treat it differently

  • 也可以考慮通過引用(Mat_<long double> &)來傳遞,而不是通過VAL性能方面的原因,當你使用一個大矩陣。

+0

是的,在聲明中的問題,我沒有改變它! – Tehada

+0

long double不是很便攜,但不同的編譯器會以不同的方式對待它。 –

+0

@JasonLang,謝謝,我將你的評論添加到了主體中 – Rama