2015-01-21 3 views
1

아래 오류가 발생했습니다.이 두 가지 방법을 시도했지만 해결하지 못했습니다. 다음은 오류 : 문자열 상수 또는 오류 전에 예상되는 식별자 : 'perf'가 유형이 아닙니다.

class Stat_S{ 
    public: 
     Stat_S(const char *name) : 
     { 
      ........ 
     } 

     ~Stat_S(); 
    }; 


    struct temp { 
     Stat_S sp("ppin"); 
    } 

오류 코드입니다 : 예상 식별자 상수 문자열 전에

class Stat_S{ 
public: 
    Stat_S(const char *name) : 
    { 
     ........ 
    } 

    ~Stat_S(); 
}; 

const char *temp="ppin"; 
struct temp { 
    Stat_S sp(temp); 
} 

오류 : '온도'는 형식이 아닙니다

class Stat_S{ 
    public: 
     Stat_S(const char *name) : 
     { 
      ........ 
     } 

     ~Stat_S(); 
    }; 

    struct temp { 
     Stat_S*sp = new Stat_S("ppin"); 
    } 

작업의 미세없는 오류를

main() 
{ 
static temp2 *temp; 
temp2 = new temp[2]; 
} 

1 차 또는 2 차 케이스를 해결하는 방법은 무엇입니까? 구조체 temp에서 Stat_S의 생성자를 호출하려고합니다. 나는 세 번째의 경우를 사용하지 않을 것이다. 왜냐하면 나는 sp를 위해 점 (.)을 사용하는 큰 정의를 이미 가지고 있기 때문에 인스턴스를 사용한 후에 그것을 변경하고 싶지 않기 때문이다.

+1

무엇을하려고합니까? 'struct temp' 내부에는 실행 가능한 코드를 작성하지 않아도되지만 멤버가 있어야합니다. 코드는 구조체가 아닌 함수로 전달됩니다. 즉시 초기화되는 멤버를 원한다면'='또는'{}'구문이 필요합니다. 구문은 지역 변수 (함수 내)에만 적용됩니다. – leemes

+0

왜 음수 포인트입니까? 너 내가 다음에 더 조심스럽게 설명 할 수있게 설명해 줄 수 있니? – eswaat

+0

나는 downvote하지 않았지만, 당신이하고 싶은 것을 설명하지 않았기 때문에 그것이라고 생각합니다. – leemes

답변

5

비 정적 멤버의 클래스 간 초기화는 중괄호 또는 동등한 초기화 프로그램을 사용하여 수행 할 수 있습니다. 세 번째 경우는 평등을 사용하는 경우입니다. 1 차 또는 2 차 제대로 수행하려면 다음과 같이 중괄호를 사용하십시오.

struct temp { 
     Stat_S sp{"ppin"}; 
    } 
관련 문제