gpt4 book ai didi

c++ - 向 Gtk create 方法发送参数

转载 作者:太空宇宙 更新时间:2023-11-04 13:16:22 24 4
gpt4 key购买 nike

我正在尝试调用具有以下签名的 Gtk::Application::create 方法。

create(int& argc, char**& argv, const Glib::ustring& application_id = Glib::ustring(), Gio::ApplicationFlags flags = Gio::APPLICATION_FLAGS_NONE);

所以在我的 C++11 代码中我写了:

char *argv[] = {"arg1", "arg2", nullptr};
int argc = 2;
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example");

但是我收到了这个错误:

no known conversion for argument 2 from ‘char* [3]’ to ‘char**&’

这里有什么问题吗?

最佳答案

Gtk::Application::create 修改它的参数,所以你的 argv 需要是一个指针左值:

char *args[] = {"arg1", "arg2", nullptr};
char** argv = args;
int argc = 2;
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example");

数组不是指针左值;它衰减为一个指针,但该指针是纯右值。

请注意,以上内容仍然不正确,因为它依赖于能够将字符串文字用作 char*。您应该改用三步流程:

std::string[] args = {"arg1", "arg2"};
char* argp[] = {&args[0][0], &args[1][0], nullptr};
char** argv = argp;
int argc = 2;
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example");

关于c++ - 向 Gtk create 方法发送参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37127340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com