2011-02-09 42 views
7

Tôi phải thêm đối tượng lớp làm thành viên trong cấu trúc c.bao gồm cả lớp là thành viên trong cấu trúc

Có cấm nào thực hiện việc này không.

Kính trọng, iSight

+0

Bạn đã gắn thẻ câu hỏi của mình cả C và C++. Trong C++ nó chắc chắn có thể là struct chỉ là một loại lớp. Trong C, tất nhiên là không thể. –

+0

Vì struct càng dễ bị "C" gắn thẻ C. – boom

Trả lời

1

Bạn CÓ THỂ có thành viên hạng C++ trong C, nhưng nó cần được xem là void* theo quan điểm C, do đó C có thể xử lý tốt.

Kỹ thuật này được gọi là Opaque Pointer.

0

Không không có. Kiểm tra ví dụ này:

#include<iostream> 

class Foo { 
    public: 
     Foo() { 
      this->i = 1; 
     } 
     int i; 
}; 

struct Bar { 
    Foo foo; 
}; 

int main() { 
    struct Bar bar; 
    std::cout << bar.foo.i << std::endl; 

    return 0; 
} 
+0

Tuy nhiên, tùy thuộc vào trang điểm của lớp, cấu trúc có thể làm mất trạng thái POD sẽ hạn chế một số thao tác có thể được thực hiện trên cấu trúc. –

+0

Bạn có ý nghĩa gì với POD? Bạn có thể làm rõ thuật ngữ cho tôi không? Chưa bao giờ nghe về nó. – Kungi

+1

POD = [Dữ liệu cũ thuần túy] (http://en.wikipedia.org/wiki/Plain_old_data_structure). – gr0v3r

4

tôi sẽ giả sử bạn đang nói về C++, vì không có khái niệm về một "lớp học" trong C - mặc dù bạn chắc chắn có thể có một struct như một thành viên của struct khác.

Ngoài một chi tiết không quan trọng, classstruct giống nhau và cả hai thường được gọi là "loại lớp". Bất cứ điều gì bạn có thể làm với một số class (chẳng hạn như có một thành viên của loại lớp), bạn cũng có thể làm với một struct.

Nếu bạn quan tâm, khác biệt duy nhất là khả năng truy cập mặc định của các thành viên và các lớp cơ sở; public cho structprivate cho class.

0

Miễn là cấu trúc chỉ được sử dụng trong mã C++, không có vấn đề gì. Tuy nhiên, nếu cấu trúc được chuyển đến mã C, những điều xấu có thể xảy ra (destructor không được gọi khi struct được giải phóng/xóa).

Nếu bạn không thấy bất kỳ nội dung nào như extern "C" trong tệp kê khai, bạn có thể an toàn.

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