2014-04-24 3 views
2

나는이 특정 주제에 대해 많이 찾았습니다. 하나 이상의 객체에 대해 많은 수의 변수를 가져와 일련의 함수를 전달해야하므로이 방법이 최선의 방법이라고 생각합니다.struct를 C++에서 생성자 매개 변수로 전달

구조체가 정의되지 않은 클래스의 생성자에 구조체를 전달하고 싶습니다. 이것이 가능한가? 내 코드는 다음과 같습니다.

class myClass 
{ 
protected: 
    double someVar; 
    . 
    . 
public: 
    myClass(struct structName); //compiler is ok with this 
    myClass();     //default construct 
}; 

struct structName 
{ 
    double someOtherVar; 
    . 
    . 
}; 

myClass::myClass(??????) ///I don't know what goes here 
{ 
    someVar = structName.someOtherVar; ///this is what I want to do 
} 

EDIT : 클래스에서 구조체를 선언하고 해당 구조체를 매개 변수로 사용한다고 가정합니까?

+3

초보자 용 C++ 서적을 읽어보십시오. 여기에 좋은 목록이 있습니다. http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list. – juanchopanza

+0

구조체는 잊어 버리십시오. 그들은 당신의 목적을 위해 다른 어떤 유형과도 같습니다. 'int'에'int x'라고 쓰면,'structName'에'structName x'를 쓸 수 있습니다. 그게 전부 야. –

답변

4

사실 이미 모두를 썼습니다. 만 대신 struct structName의 나는 const struct structName &

myClass::myClass(const structName &s) 
{ 
    someVar = s.someOtherVar; 
} 

을 사용 또는 당신은 소위

myClass(struct structName); 

struct structName 유형 이름을 정교이 선언에서

myClass::myClass(const structName &s) : someVar(s.someOtherVar) 
{ 
} 

로 생성자를 정의 할 수 있습니다. 이 클래스는 클래스가 정의 된 네임 스페이스에 새로운 유형을 도입합니다.

예제에서는 먼저 구조를 선언하고 정의했습니다. 생성자 선언에서는 구조체가 완전한 유형 일 필요는 없습니다.

+0

@Ben Voigt 그는 선언문에 키워드 구조체를 지정했습니다. –

+0

맞아요, 당신은 "대신에"그가 필요하지 않은 것처럼 말했습니다. 이제 당신이 그것을 되찾았으니 모든 것이 잘되었습니다. –

관련 문제