pure-virtual

    1

    2답변

    다음 클래스가 기본 및 파생 클래스이고 컴파일러가 추상 클래스이므로 DLog 인스턴스를 만들 수 없다는 불만이 있습니다. 누군가이 오류를 해결할 수있는 방법을 알려 줄 수 있습니까? 순수 가상 함수가 파생되지 않았기 때문에 추측하고 있습니다. 싱글 DLog *DLog::Instance() { if (!m_instance) m_insta

    4

    1답변

    일부 코드는 I/O Kit이고 일부는 이상하게 실행됩니다. __LP64__ 전 처리기 매크로가 설정된 경우에만 메소드가 순수 가상으로 선언되는 곳이 있습니다. 예제에서 IOBlockStorageDevice : public #ifdef __LP64__ virtual IOReturn getWriteCacheState(bool *enabled) = 0

    12

    5답변

    템플릿 오리 입력과 순수 가상 기본 클래스 상속 중 하나를 선택하기위한 지침은 무엇입니까? 예 : // templates class duck { void sing() { std::cout << "quack\n"; } }; template<typename bird> void somefunc(const bird& b) { b.sing

    144

    4답변

    가능한 중복 : C++ Virtual/Pure Virtual Explained 순수 가상 함수와 가상 함수의 차이점은 무엇입니까? 나는 "순수 가상 함수가없는 몸 가상 함수"알아,하지만이 평균을 수행하고 어떤 것은 실제로 아래 선으로 이루어집니다 : 순수 가상 함수는 일반적으로하지 않습니다 virtual void virtualfunctioname() = 0

    2

    1답변

    나는 두 개의 순수 가상 메서드가있는 일반 추상 클래스가 있습니다. 클래스 자체는 공유 라이브러리의 일부입니다. 공유 라이브러리 자체의 컴파일은 정상입니다. 그러나 라이브러리가 공유 라이브러리의 추상 클래스에서 파생되고 순수 가상 메서드를 정의하는 또 다른 클래스를 가진 다른 프로그램에 연결되면 다음과 같은 링커 오류가 발생합니다. 은이 같은 컴파일 ..

    4

    3답변

    C++ 사양에 대한 필자의 지식에 따르면 가상 멤버가있는 클래스의 vtable은 비 순수 비선형 가상 메서드의 첫 번째 정의에 배치됩니다. 컴파일러는 모든 순수 가상 메소드 (예 : 인터페이스)를 가진 클래스에서 상속받은 클래스를 어떻게 처리합니까? 이 경우 vtable은 어디에 배치됩니까?

    1

    2답변

    필자가 현재 작성중인 응용 프로그램에서 순수 가상 함수로 템플릿 클래스를 만든 다음 가상 클래스의 인스턴스를 상속하고 가상 함수를 구현하는 다른 클래스를 만들었습니다. 가상 함수는 부모 생성자로부터 호출되며 자식 생성자도이를 사용합니다. 링커 오류로 인해이 코드를 작성할 수없고 그 이유를 알 수 없습니다. 다음은 내가 가지고있는 문제를 재현 할 수있는 단순

    2

    2답변

    "불순한 가상 함수"는 진단 목적으로 (http://www.gotw.ca/gotw/031.htm에 설명 된대로) 구현 된 순수 가상 함수를 의미합니다. 을 구현하는 산뜻한 방법은하는 것입니다 : class Foo { public: ... virtual void Bar() = 0; }; void Foo::Bar() { assert(

    0

    1답변

    나는이 문제가 boost :: shared_ptrs를 키 값으로 사용하여 발생할 수 있다고 생각합니다. //header file: #include <map> std::map<boost::shared_ptr<foo>, bar> myMap; // Private member variable ////////// myMap.insert(pair); ///

    8

    2답변

    문제 클래스가 *.h과 *.cpp files으로 나뉘어 질 때 일부 추상 클래스에서 상속 된 순수 가상 함수를 구현하는 데 문제가 있습니다. 컴파일러 (g++)는 순수 함수가 있기 때문에 파생 클래스를 인스턴스화 할 수 없다고 알려줍니다. 인터페이스의 *.h과 너무 derived.h에 - /** interface.h**/ namespace ns {