2017-12-25 8 views
-2

나는 밀도, 원자량 등과 같은 속성을 가진 가스들을 가지고있다. 기본적으로 나는 프로그램에 쉽게 접근 할 수있는 명명 된 가스를 추가 할 수있는 컨테이너를 원한다. . 나는 파생 클래스와 함께이 일을 선호 될 수있다 생각컨테이너에있는 C++ 명명 된 요소들

class gases 
{ 
    class gas 
    { 
     double mass; 
     double density; 
    }; 

gas h2o; 
gas co2; 
}; 

: 나는 종류의 등이 사용하여 수업을 할 수 있습니까? 베이스 클래스 가스에서 h2o를 유도합니까? 그러나 나는 그것을 구현하는 방법에 대해 완전히 확신 할 수는 없으며 또한 그것이 내가 찾고있는 것이라고 생각하지 않는다. 내가 만족스럽지 못한 점은 클래스 정의에 이미 모든 가스를 선언해야한다는 것입니다. 나 (의사 코드) 같은 것을 할에 그것은보다 직관적 인 것 : 나는 내가 객체 이름을 추가 할 수있는 용기를 찾고 있어요 즉

object gas (mass,density) 
container gases 
gases.append(h2o(m,rho)) 

cout << "the atomic mass of water is" << gases.h2o.mass << endl; 

.

또 다른 불만족스러운 해결책은 가스 대상물의 벡터를 만드는 것이지만 가스를 첨가 한 순서를 기억해야합니다.

+2

는 소리 [표준 : :지도] (http://en.cppreference.com/w/cpp/container/map). –

+2

'std :: map gases;가 작동해야합니다. _ "명명 된 객체"로 정확히 무엇을 의미하는지 더 잘 정의 할 수 있습니다. – user0042

+0

예,'std :: map'은 내가 찾고있는 것을하고있는 것처럼 보인다. 고마워. 메타 질문 : 그래도이 질문은 즉석 투표로 결정 되었습니까? 나는 그렇게해서는 안된다는 말은 아니며, 단지 왜 그 이유를 이해하기를 원하므로 앞으로 더 나은 질문을 제기 할 수 있습니다. – storluffarn

답변

1

가스를 추가 및 제거하거나 깔끔하게 보관할 수 있도록 동적 컨테이너를 요구하는 것인지 확실하지 않습니다. 후자의 경우 어쩌면이 같은 것을 시도 할 수 있습니까?

#include <iostream> 

struct gasses 
{ 
    struct hydrogen 
    { 
     static double const mass; 
     static double const density; 
    }; 

    struct helium 
    { 
     static double const mass; 
     static double const density; 
    }; 
}; 

double const gasses::hydrogen::mass = 1.00794; 
double const gasses::hydrogen::density = 0.000089; 
double const gasses::helium::mass = 4.002602; 
double const gasses::helium::density = 0.00018; 


int main() 
{ 
    std::cout << "The density of helium is: " << std::fixed << gasses::helium::density << " g/mL" << std::endl; 

    return 0; 
} 

인쇄 : 당신이 같은 연관 컨테이너를 원하는처럼

The density of helium is: 0.00018 g/mL 
+1

이 작업은'std :: map'도 작동합니다. 나는 이것들과 같은 상황에서 어떤 것을 선호하는지 모르지만 이것은 나의 질문에 대한 답이다. 감사 – storluffarn