2013-10-22 4 views
0

동적으로 할당 된 배열 (이야기)을 통해 순환하는 중첩 루프를 만들고 '*'문자를 찾고이 문자가 다른 위치의 정보로 채워지는 위치를 채우려한다고 가정합니다. 동적으로 할당 된 배열 (user_input). 그런 다음이 교체 정보를 body라는 새로운 동적 할당 배열에 저장하여 cout으로 만듭니다. 여기 오류입니다 :이 할당 오류를 해결하는 방법

1>   with 
1>   [ 
1>    _Elem=char, 
1>    _Traits=std::char_traits<char>, 
1>    _Alloc=std::allocator<char> 
1>   ] 
There is no context in which this conversion is possible 

사람이 내가 잘못 걸 알 수 있습니까? 내 코드는 다음과 같습니다.

void create_story(string & user_inputs, string *story, int num_lines, 
     string **body) 
{ 
    *body = new string[num_lines]; 

    for (int i = 0; i < story[i].length; i++) 
    { 
     if (story[i] == "*") 
     { 
      body[i]; 
     } 

     for (int j = 0; j < story[i].length(); j++) 
     { 
      if (story[i][j] == '*') 
      { 
       cout << "I found it at character number: " << i; 
       *body[i] += user_inputs; 
      } 
      else 
      { 
       body[i] += story[i][j]; 
      } 
     } 
    } 
} 

답변

0

이 코드에는 몇 가지 논리 오류가 있습니다.

  1. 다음 줄은 프로그램 상태에 아무런 영향을 미치지 않습니다 (부작용 없음).

    body[i];

  2. 다음 줄

    인덱스 i가 불평등의 양쪽에 나타납니다 때문에 제대로 종료하기가 매우 어렵다.

    for (int i=0; i<story[i].length; i++)

  3. 그것이 int와 멤버 함수 (length)를 비교하기 때문에 상기 라인 컴파일 할 수있다.

  4. 다음 줄은 i 번째 줄 전체가 단순한 단일 별인지 여부를 테스트합니다.

if(story[i]=="*")

나는 다른 문제도있다 확신합니다. 적은 코드로 시작하여 한 번에 모든 작업을 시도하는 대신 단계적으로 과제를 완료 할 수 있는지 확인해야합니다. 이해하기 쉽습니다.

관련 문제