はじめに

CのコードとC++のコードが混在する環境では、CのコードからC++のコードを呼び出すことが必要になる場合があります。
このページでは、CのコードからC++のコードを呼び出す方法について説明します。

尚、逆にC++のコードからCのコードを読み出す方法については「C++のコードからCのコードを読み出す」のページをご参照ください。

呼び出される側のC++のコード

Cのコードから、C++のコードを直接呼び出すことは出来ないため、C++のコード側でCのコードに利用させる部分を「extern "C"」宣言します。

C++のコード
#include <stdio.h>

class Person
{
    public: virtual void ask();
};

class GoodPerson : public Person
{
    public: void ask()
    {
        puts("そんなことしちゃ駄目だよ!");
    }
};

class EvilPerson : public Person
{
    public: void ask()
    {
        puts("やっちまえよ、へっへっへ…");
    }
};

extern "C" void askOpinion()
{
    Person *tPerson;

    tPerson=new GoodPerson();
    tPerson->ask();
    delete(tPerson);

    tPerson=new EvilPerson();
    tPerson->ask();
    delete(tPerson);
}

呼び出す側のCのコード

呼び出す側のCのコードでは、「extern "C"」宣言したコードをそのまま利用することが可能です。

Cのコード
#include <stdio.h>

void main()
{
    askOpinion();
}


あなたの探し物は見つかりましたか?
まさにこれだ
参考になった
ちょっと違う
これじゃない

何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まさにこれだ
13 (87%)
参考になった
1 (7%)
ちょっと違う
1 (7%)

表示できるメッセージはありません。