4
類別B<certain X>
想與任何一個C<any,certain X>
成爲好友。
我拉我的頭髮,找到如何做到這一點。如何使用由「模板使用」定義的模板(別名)類的朋友?
下面是成功編譯的完整代碼,只要我不添加有問題的行。
#include <string>
using namespace std;
enum EN{ EN1,EN2 };
template<EN T1,class T2> class C{
public: C(){
std::cout<<T1<<std::endl;
}
};
template<class T2> class B{
template<EN T1> using CT = C<T1,T2>;
//template<EN TX> friend class CT; //<-- error if insert this line
public: static void test(){
CT<EN1> ct;
}
};
int main() {
B<int>::test();
return 0;
}
下面是我試了一下(全部失敗): -
template<EN T1> friend class C<T1,T2>;
template<EN TX> friend class CT;
template<typename TX> friend class CT;
template<class TX> friend class CT;
template<class TX> friend class CT<TX>;
template<typename> friend typename CT;
問:什麼是正確的說法(1線)插入?
如果可能,我希望朋友聲明使用CT
而不是C
。
我已閱讀a similar question和this,但它們比我的簡單。
(我是新來的C++)。
與普通C(與CT相對照)相同嗎?即需要2個朋友的陳述? – javaLover
@javaLover是的,它是一樣的。 – songyuanyao