Đối với bài tập về nhà của tôi, tôi phải tạo một danh sách liên kết và nó phải là một lớp mẫu. Lệnh gán cho một lớp mẫu được gọi là Danh sách và một lớp mẫu lồng nhau khác được gọi là Liên kết.Cách thiết kế các lớp mẫu lồng nhau trong đó các lớp lồng nhau cùng loại
Các phương pháp cần được xác định bên ngoài định nghĩa lớp.
Tôi đã tạo phiên bản đơn giản của bài tập trước và nó hoạt động, nhưng tôi cảm thấy có lỗi trong thiết kế của tôi.
#include <iostream>
using namespace std;
template <class T1>
class A
{
public:
template <class T2>
class B;
T1 _a;
};
template <class T1>
template <class T2>
class A<T1>::B
{
public:
T2 _b;
};
int main()
{
A<int> a;
a._a = 5;
A<int>::B<int> b;
b._b = 10;
cout << a._a << " " << b._b << "\n";
return 0;
}
câu hỏi chính của tôi là, kể từ khi lớp lồng nhau sẽ cùng loại, như bạn có thể nhìn thấy từ báo cáo kết quả A<int>::B<int> b;
, là có một cách để có lớp B tự động được cùng loại là A? Câu hỏi của tôi thậm chí có ý nghĩa không? Nói cách khác, tôi có thể làm A<int>::B b;
và b tự động cùng loại với A không? Sẽ không bao giờ có một tình huống mà tôi sẽ có A<double>::B<int>;
chẳng hạn.
OK, tôi đã suy nghĩ rằng sẽ làm việc, có phải là một vấn đề với cú pháp của tôi sau đó bởi vì tôi đã nhận được lỗi. Tôi sẽ thử nó lần nữa. –