C++ の shared_ptr で動的バインディング ― 2020年05月09日 11時19分27秒
#include <memory>
#include <iostream>
class base
{
public:
virtual void f() const
{
std::cout << "base" << std::endl;
}
};
class derived : public base
{
public:
void f() const
{
std::cout << "derived" << std::endl;
}
};
int main()
{
std::shared_ptr< base > ptr = std::make_shared< derived >();
ptr->f();
}
これを実行すると、derived になる。
% c++ shared_ptr_inheritance.cpp
% ./a.out
derived
継承関係にない shared_ptr 型を渡すとエラーになるようだ。
実際のエラーの例。
#include <memory>
int main()
{
std::shared_ptr< char > incompatible = std::make_shared< int >()
;
}
% c++ shared_ptr_incompatible.cpp
shared_ptr_incompatible.cpp:5:29: error: no viable conversion from
'shared_ptr
前回。
最近のコメント