0
如何方便地將很多模板函數聲明爲模板類的朋友函數?聲明許多功能作爲一個類的朋友
例子:
template <typename T>
void funct1(MyClass<T> & A); //1.forward declaration.
template <typename T>
class MyClass{
protected:
T a;
friend funct1(MyClass<T> & A); //2.declare friend
}
template <typename T>
void funct1(MyClass<T> & A){ //3.actual implementation
++A.a;
}
步驟1,2,3得到重複每個許多功能....
是否有可能將所有這些功能到的東西,然後聲明一切那些東西是模板類的朋友?
爲什麼會有這麼多的朋友的功能呢?也許你應該重新考慮你的設計。 –
我正在寫一個n維數組之間的數學小庫。 myclass是一個n維數組對象。這些函數是在ndarrays上運行的許多數學運算。可能是我可以把所有的功能變成ndarray對象的方法。哼。但後來我得到了像A.sin()而不是罪(ndarray A)的東西。那感覺有點奇怪。 – rxu
也許你應該用'iterator'或'operator []'暴露數組的元素。簡單地將功能稱作「朋友」並不是一個好主意。否則,每次添加新函數時,都必須修改「MyClass」。 –