2009-05-16 37 views

Trả lời

19

Có, điều đó là có thể. Sau đây chỉ là tuyên bố wsx

class wsx; 

Đó là loại khai được gọi là một lời tuyên bố về phía trước, bởi vì nó cần thiết khi hai lớp tham khảo với nhau:

class A; 
class B { A * a; }; 

class A { B * b; }; 

Một trong số đó cần phải được chuyển tiếp tuyên bố sau đó.

+1

Một lưu ý phụ: nó cần thiết không chỉ trong trường hợp 2 lớp giới thiệu lẫn nhau. Ví dụ, các khai báo chuyển tiếp có thể được sử dụng thay vì bao gồm các tiêu đề để giảm thiểu các phụ thuộc. – SomeWittyUsername

0

Tôi không chắc chắn ý của bạn là gì. Mã bạn dán trông chính xác.

+0

Tôi đã sử dụng mã như một ví dụ về những gì tôi nghĩ nó sẽ như thế nào; Tôi đã hỏi nếu nó có thể. –

+0

Vâng, nó có thể, và bạn đã làm nó, nhưng tôi không chắc chắn bạn nói những gì bạn có nghĩa là để nói, và đã làm những gì bạn có nghĩa là để làm :) – bdonlan

0

Bạn đã xác định lớp học. Nó không có thành viên dữ liệu, nhưng điều đó không cần thiết.

3

Trong ví dụ của bạn,

class wsx; // this is a class declaration 

class wsx // this is a class definition 
{ 
public: 
wsx(); 
} 

Vì vậy, có, bằng cách sử dụng class wsx; người ta có thể khai báo một lớp mà không cần định nghĩa nó. Khai báo lớp cho phép bạn khai báo con trỏ và tham chiếu đến lớp đó, nhưng không khai báo các cá thể của lớp. Trình biên dịch cần định nghĩa lớp để nó biết bao nhiêu bộ nhớ để cấp phát cho một thể hiện của lớp.

4

Đây là định nghĩa của lớp

class wsx 
{ 
public: 
wsx(); 
} 

Đây là định nghĩa của các nhà xây dựng

wsx::wsx() 
{ 
std::cout<<"WSX"; 
} 

Đây là một tuyên bố về phía trước nói rằng lớp SẼ được định nghĩa ở đâu đó

class wsx; 
2

Có. Nhưng nó là không phải có thể xác định một lớp mà không khai báo nó.

Vì: Mọi định nghĩa cũng là một tuyên bố.

Các vấn đề liên quan