2016-12-20 1 views
1

안녕하세요 저는 C++에서 CLR 응용 프로그램을 만들고 있습니다. 몇 시간의 작업 후에 나는 같은 파일에 모든 것을 넣는 것보다 다른 파일로 클래스를 옮기는 것이 더 좋은 아이디어라고 결론 내렸다. 새 헤더 파일과 새 cpp 파일을 만들었지 만 초보자 일 뿐이므로 내가 잘못한 경우가 있습니다. 클래스가 별도의 파일에 있음 ++

내 헤더 파일 내가이

Show sh; 

과 같은 것을하고 있어요 주에

#pragma once 

class Show { 
public: 
    void Show::show_all(int num, int id_master, int id_slave, int periferia, int data); 
}; 

내 CPP 파일 (단순한 인쇄 기능) 다음

#include "Show.h" 
#include <stdio.h> 

class Show{ 
private: 
    void show_all(int num, int id_master, int id_slave, int periferia, int data) { 

    printf("%d\n", num); 
    printf("id of mastra is: %d\n", id_master); 
    printf("id of slave is: %d\n", id_slave); 
    printf("id of device is: %d\n", periferia); 
    printf("in data part %d\n", data); 

    }; 
}; 

입니다 그런 다음, 이처럼 내 기능을 호출하려고하면

선언되지 않은 식별자 (나는 그것을 언급 항상 때)
  • '쇼': 선언되지 않은 식별자
  • sh.vypis_vsetko(num, id_master, id_slave, periferia, data); 
    

    는하지만 난 내가 (주요 기능 모두를) 이해 해달라고 많은 오류

    • 'SP'를 얻을
    • '.show_all'의 왼쪽에/struct/union 클래스가 있어야합니다.
    • 구문 오류 : ';'이 없습니다. 'sh'식별자 앞에

    나는 결론을 내리지 않고이 문제를 해결하기 위해 많은 시간을 보냈습니다. 모든 조언에 대해 매우 감사드립니다. 클래스없이 이루어집니다 .cpp 파일에 클래스 메소드를 정의하고, 마지막으로

    class Show { 
    public: 
    
        void show_all(int num, int id_master, int id_slave, int periferia, int data); 
    }; 
    

    :

    +3

    여기에는 정말 기본적인 오류가 많이 있습니다. 헤더와 구현 파일을 분리하는 방법에 대한 자습서를 확인하십시오. – AndyG

    +0

    좋아요, 코드가 정확하지 않습니다. 궁금한데 왜 접근 수정자를'public'에서'private'으로 바꾸고 싶습니까? – George

    답변

    4

    우선의 경우는, 헤더 파일, 클래스 메소드를 선언하는 것은 메소드 이름에 클래스 이름을 접두어없이 이루어집니다 무엇이든지 선언은 :

    void Show::show_all(int num, int id_master, int id_slave, int periferia, int data) { 
    
        printf("%d\n", num); 
    
        // the rest of the code. 
    

    당신은 이미 #include D 헤더 파일에 클래스를 선언했다.

    +0

    전체 클래스 선언은 함수의 정의에서 볼 수 있어야하지만 OP가 실제로 작성한 것은 아닙니다. – Quentin

    +0

    헤더 파일은'# include'd를 얻고 있으므로 괜찮을 것입니다. –

    +0

    내 코드를 수정하려고 시도했지만 여전히 동일한 오류가 발생합니다. –

    관련 문제