>

두 개의 수업이 있습니다;와이즈 비즈  그것은 직원과 Salary 의 급여에 관한 정보와 계산을 유지하기위한 것입니다  그것은 Employee 유형의 객체를 가지고 있습니다.  직원의 이름과 주소와 같은 일부 회원은 ...

  • 내가하고 싶은 것은 class Salary 를 방지하는 것입니다   class Salary 를 제외하고 인스턴스화되지 않음 . 그래서 class Employee 의 생성자를 선언했습니다.  개인 및 Salary   Employee 의 친구 . 하지만 오류가 발생합니다 :

    Salary
    
    

  • class Employee; class Salary { public: private: Salary() : revenue_{}, cost_{} {} Salary(int x, int y) : revenue_{ x }, cost_{ y } { } int revenue_, cost_; friend class Employee; }; class Employee { public: std::string name_; Salary sal; }; int main(){ Employee emp{}; // "Salary::Salary()" is inaccessible } 선언을 전달하면 문제가 해결됩니다. :

    main
    
    

    와우 즈 비즈 만들기   int main(int, char*[]); 의 친구  급여에서와 같이 :

    main
    
    

이제 프로그램이 올바르게 컴파일됩니다!

*** 객체를 이런 식으로 선언하면 주된 또 다른 것 :

class Salary

class Salary { //... friend int main(int argc, char* argv[]); };
  • 답변 # 1

    Employee 에 대한 생성자를 제공하지 않기 때문에  초기화 Employee emp{}; 의 중괄호  집계 초기화를 수행합니다. 이는 기본적으로 main() 컨텍스트에서 기본 규칙을 사용하여 각 멤버가 하나씩 초기화됨을 의미합니다. . main() 이후   Salary 에 액세스 할 수 없습니다  생성자가 실패합니다.

    다른 사람들이 지적했듯이, Employee 를 추가  기본 생성자가 문제를 해결합니다 :

    class Employee {
        public:
            Employee() = default;
            std::string name_;
            Salary sal;
    };
    
    

  • 답변 # 2

    Employee 클래스의 기본 생성자를 명시 적으로 선언해야합니다  따라서 당신은 uniform initialization 를 통해 abject를 초기화 할 수 있습니다 :

    class Employee {
        public:
            Employee(){} // add it
            std::string name_;
            Salary sal;
    };
    int main(){
        Employee emp{}; // now this should compile
    }
    
    

  • 답변 # 3

    Employee 가 필요합니다 Salary 의 ctor를 호출하는 ctor . Salary 의 ctor   main 에서 액세스 할 수 없습니다 .

    예 :

    class Employee {
    public:
        Employee() : sal() {}
        public:
            std::string name_;
            Salary sal;
    };
    
    

  • 답변 # 4

    main () 함수에서 "Employee emp"다음에 "{}"을 지우면 제대로 컴파일됩니다 (Fedora 27의 gcc 7.3.1).

관련 자료

  • 이전 excel - WorkbookActiveSheet에서 런타임 오류 9 (첨자가 범위를 벗어남)
  • 다음 Python으로 Yahoo Finance의 내역 데이터 스크랩