2014-03-13 2 views

답변

1

배열을 할당 할 수 없습니다. 또한 선언의 시점에서 멤버를 초기화 할 수 있습니다

M() : s{"abc","abc","abc","abc","abc"} 
{ 
} 

:하지만 당신은 생성자 초기화 목록을 사용할 수 있습니다

class M{ 
    string s[5]= {"abc","abc","abc","abc","abc"}; 
    M(){} 
}; 

이들 모두는 C++ 11 컴파일러를 필요로한다.

또는 원하는 값을 포함하도록 배열을 수정할 수 있습니다. 예를 들어,

#include <algorithm> // for std::fill 

M() 
{ 
    std::fill(s, s+5, "abc"); 
} 
+0

C++ 11을 지원하지 않는 vs2010을 사용한다면 어떻게해야합니까? – user2793559

+0

@ user2793559 마지막 옵션이 정상적으로 작동합니다. – juanchopanza

+0

배열의 요소가 서로 다른 경우 (예 : { "a", "b", "c", "d", "e"} C++ 11없이 간단한 방법으로이를 수행하는 방법 ? – user2793559

0

vector 대신 사용

std::vector<string> s; 
s = {"abc","abc","abc","abc","abc"}; 
+0

'#include #include using namespace std; 클래스 M { 벡터 s; 공개 : M() { s = { "abc", "abc", "abc", "abc", "abc"}; } }; int main() { return 0; }'vs2010을 사용하여 컴파일했지만 성공적으로 컴파일 할 수 없습니다. – user2793559

4

을 당신이 MEM-초기화 목록을 사용할 수 있습니다. 예 :

class M 
{ 
    string s[5]; 
pyblic: 
    M() : s{ "abc", "abc", "abc", "abc", "abc" } 
    { 
    } 
}; 

또는 대신 표준 클래스 std::array을 사용할 수 있습니다. 예를 들어,

관련 문제