해결책

class HomeForSale {
public:
    ...
private:
    ...
    HomeForSale(const HomeForSale&); // 선언만 (정의 없음)
    HomeForSale& operator=(const HomeForSale&);
};

링크 타임 에러를 컴파일 타임 에러로 변경하기

class Uncopyable {
protected: // 생성과 소멸 허용
    Uncopyable() {} // 파생 객체의
    ~Uncopyable() {} // 생성과 소멸 허용
private:
    Uncopyable(const Uncopyable&); // 복사 방지
    Uncopyable& operator=(const Uncopyable&);
};

class HomeForSale: private Uncopyable { // 클래스는 더 이상
    ...                                // 복사 생성자나 복사 할당 연산자를 선언하지 않음
};

💫Things to Remember 컴파일러가 자동으로 제공하는 기능을 비활성화하려면, 해당 멤버 함수를 private으로 선언하고 구현하지 않으면 된다.