2010-03-06 27 views
10

Một người bạn của tôi đã gửi cho tôi đoạn mã này để kỷ niệm sinh em bé mới của mình:C++ đoạn mã cho thẻ bé chào mới

void new_baby_name() { father_surname++; } 

Đoạn là từ quan điểm của mình, ông là cha và em bé mới nhận được họ từ anh ấy.

Tôi đã trả lời với điều này:

class father_name {}; 
class mother_name {}; 
class new_baby_name: public father_name, public mother_name {}; 

Nhưng tôi không hoàn toàn hài lòng về câu trả lời của tôi ...

+3

+1 Câu hỏi dễ thương! –

+3

Các tên rất trống ... :) – kennytm

+1

Thêm tên đầu tiên là các thuộc tính riêng tư và khác như màu mắt, màu tóc, nhóm máu, cấu hình DNA có thể được bảo vệ. –

Trả lời

30

Câu trả lời đúng là:

Sleep(0); 
8
class baby 
{ 
public: 
    vector<gene> genes; 
    baby(baby* logical_father, baby* biological_mother, baby* other) 
    { 

     int i; 
     if (other == null) 
     { 
      for (i = 0; i < logical_father->genes.size()) 
      { 
       if (rand() > 0.5) 
       { 
        genes.push_back(logical_father->genes[i]); 
       } 
       else 
       { 
        genes.push_back(biological_mother->genes[i]); 
       } 
      } 
     } 
     else 
     { 
      for (i = 0; i < other->genes.size()) 
      { 
       if (rand() > 0.5) 
       { 
        genes.push_back(other->genes[i]); 
       } 
       else 
       { 
        genes.push_back(biological_mother->genes[i]); 
       } 
      } 
     } 
    } 
} 

Có, tất nhiên, các phương pháp khác để xây dựng một em bé.

+1

Cha và mẹ đều là 'baby''s o_O – kennytm

+4

Sẽ đơn giản hơn nếu bạn bắt đầu bằng cách xác định cha là ai, nhưng nooo… – Potatoswatter

+5

@Simon: Các gen chỉ có thể được thừa kế từ một người cha sinh học, không phải từ một người cha hợp lý. –

1
destroy Sanity(); 

Không thể chạy, có thể ngăn xếp tràn. Tôi không giỏi ở c.

+1

Điều đó thực sự sẽ là '~ Sanity();' mà gọi là hủy diệt của Sanity. –

0

Chỉ cần một bugfix nhỏ để tránh tên xấu:

class male {}; 
class female {}; 

class father_name {}; 
class mother_name {}; 

template <class gender> 
class new_baby_name; 

template <> 
class new_baby_name<male>: public father_name {}; 

template <> 
class new_baby_name<female>: public mother_name {}; 

Lưu ý rằng bạn có một vấn đề nghiêm trọng nếu điều này nên bắn một lỗi biên dịch ;-)

+0

Tại sao kế thừa từ compiletime_error, chắc chắn chỉ khai báo 'class new_baby_name;' và không định nghĩa nó sẽ hoạt động? –

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