這是一個 MCVE:
template <typename T>
class A {
public:
friend class B;
};
template <typename T>
class B {};
int main() {
A<int> a;
B<int> b;
return 0;
}
非常簡單的事情,我不知道為什么這會導致編譯器錯誤。我是使用模板的新手。我還嘗試將朋友宣告更改為,friend class B<T>;
但這會產生其他錯誤,并且效果不佳。
以下是編譯器為上述代碼拋出的錯誤:
1> Error C2989 'B': class template has already been declared as a non-class template D:\Projects\1.C \test\test\test.cpp 8
2> Error C3857 'B': multiple template parameter lists are not allowed test D:\Projects\1.C \test\test\test.cpp 7
3> Error C2059 syntax error: '<' test D:\Projects\1.C \test\test\test.cpp 12
uj5u.com熱心網友回復:
這取決于你想要什么,如果你想交朋友是B<T>
對的,但它需要宣告:A<T>
friend class B<T>;
B
template <typename T> struct B;
template <typename T>
class A {
public:
friend class B<T>;
};
template <typename T>
class B {};
int main() {
A<int> a;
B<int> b;
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/508309.html
上一篇:在JPanel加載時單擊JButton時,JLabel不可見
下一篇:轉換整數型別