在同一个项目的C函数中调用C ++类方法

时间:2013-08-01 14:20:20

标签: c++ c qt

我有一个Qt Gui项目,它与C和C ++形成混合语言。我必须在我的C源代码中使用C ++类函数。怎么称呼它?你能帮我吗?

调用C ++函数

 void MainWindow::putsDisplay(int Line, char *string)
{
    if(Line == 0)
    {
        ui->customerLine_1->setPlainText(string);
    }

    if(Line == 1)
    {
        ui->customerLine_2->setPlainText(string);
    }

    if(Line == 2)
    {
        ui->cashierLine_1->setPlainText(string);
    }

    if(Line == 3)
    {
        ui->cashierLine_2->setPlainText(string);
    }

    if(Line == 4)
    {
        ui->printerArea->setPlainText(string);
    }
}

2 个答案:

答案 0 :(得分:2)

你不能直接使用C ++方法,你必须创建一个函数来调用你的对象的方法。这是一个示例(C ++文件的一部分):

extern C 
{

    void   example(int Line, char *string)
    {
       static MainWindow win;

       win.putsDisplay(Line, string); 
    }

}

C代码:

int main()
{
    example(42, "it is an example");
    return 0;
}

extern C将禁用名称修改,因此可以从C代码中调用example()。您可以保留static MainWindow win;,或将其设为全局或其他内容,但您需要MainWindow个对象。

答案 1 :(得分:0)

请记住,C是C ++的一个子集。

您可以将具有C代码的文件命名为x.C或x.cpp,并使用c ++编译器将其与其余文件一起编译。然后,您将能够从C代码中调用C ++方法。