向Gtk-create方法发送参数
Sending arguments to the Gtk create method
我正在尝试调用具有以下签名的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");
数组不是指针左值;它衰减为一个指针,但该指针是一个prvalue。
请注意,上面的内容仍然不正确,因为它依赖于能够将字符串文字用作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");
相关文章:
- 使用在用于SFINAE的void_t中具有参数的方法
- 如何制作一个将函数作为参数的类方法
- c++方法参数只能在linux的发布模式下自行更改
- 使用用户定义的参数调用future/async并调用类方法
- 将成员函数指针作为参数传递给模板方法
- 在 cpp 文件中隐藏采用模板参数引用的方法
- 使用模板参数重载C++方法:如何使其适用于模板的子类?
- 具有字符串化的可变参数宏的现代/通用方法
- 在 C++ 中将非指定类型作为参数传递的最佳方法?
- 如何在方法中传递结构参数
- 如何将类成员方法的参数列表自动填充写入可变参数?
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- C++方法是否可以根据传递给构造函数的参数具有不同的返回类型?
- C++接口继承不同的参数方法
- C++ 模板:重载时找不到基类类型参数方法
- 如何使用迭代器作为参数方法?
- 具有不同亚型的参数方法
- 如何以相同的方法在子类中超载的相同方法来实现工作变量参数方法
- 如何将 C 中声明的可选参数方法转换为 c++
- 如果模板化"ResourceCache"需要不同的创建参数/方法,它们如何加载/创建 T 类型的资源?