我正在尝试使用使用Qt制作的GUI来控制Dynamixel伺服.Dynamixel提供了一组C库来控制电机,而我知道GUI的唯一方法是Qt,它本质上是C++.是否可以以任何方式使用Qt C++代码中的Dynamixel C库?
根据C++中'static'关键字的这个链接:
static关键字仅与类定义中的静态成员的声明一起使用,但不与该静态成员的定义一起使用.
为什么成员函数定义中禁止使用static关键字?我确实理解在其定义中将函数重新声明为"静态"是多余的.但是在编译函数定义时使用它应该是无害的,因为它不会导致任何歧义.那么为什么编译器会禁止它呢?
我刚在大学里学过Java.但是,我可以编写在命令行中运行的程序.如何使用Java创建GUI软件,比如记事本?我真的很抱歉在这个论坛上提出这样一个基本问题,但我真的很有兴趣编写真实世界的软件.另外,我听说过很多关于Python的内容.如何使用Python开发类似的软件?
我正在尝试确定初始化全局强类型枚举的默认值.以下代码当然不能编译.
#include <iostream>
using namespace std;
enum class A{a=10, b=20};
// Global strongly-typed enum, uninitialized
A k;
int main() {
if(k==A::a)
cout<<"Equal to a"<<endl;
else if(k==A::b)
cout<<"Equal to b"<<endl;
else if(k==0)
cout<<"Equal to zero"<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
什么是"k"初始化?
在浏览一些C++代码时,我遇到了以下几行:
for (int i = 0; i < count; i++) {
if (&array[i].GetData() == el)
break;
}
if (i < count) {
// .. Do something
}
Run Code Online (Sandbox Code Playgroud)
我很惊讶地看到循环计数器变量i可以在循环外部访问!
只是为了确保i循环外部与循环内部的循环相同,我将循环变量名称更改为i1.
for (int i1 = 0; i1 < count; i1++) {
if (&array[i1].GetData() == el)
break;
}
if (i < count) { // COMPILATION ERROR: Identifier i is undefined
// .. Do something
}
Run Code Online (Sandbox Code Playgroud)
这导致该行的编译错误if(i < count):
标识符'i'未定义.
到底是怎么回事?这对于编译器错误来说太基础了.如果i父作用域中有另一个,则不会出现编译错误.我错过了什么吗?我正在使用Visual Studio 2015.
请考虑以下代码:
#include <iostream>
class Test
{
public:
Test() : a{ 0 }
{}
void print() const
{
std::cout << "a : " << a << std::endl;
}
void operator->()
{
a = 5;
}
void operator++()
{
++a;
}
public:
int a;
};
int main()
{
Test a;
a.print();
// Increment operator
a.operator++(); // CORRECT
++a; // CORRECT
a.print();
// Indirection operator
a.operator->(); // CORRECT
a->; // INCORRECT
a.print();
}
Run Code Online (Sandbox Code Playgroud)
为什么对第二个->操作员的调用不正确?我知道这种用法->与一般用法不同,但这种用法是否被标准禁止?
我很确定这是不可能的,但如果某种方式存在(可能通过编译器提供的宏),它对我来说非常有用,所以我在这里发布它。假设我有一个函数:
void func( int param1, bool param2=false){ ... }
Run Code Online (Sandbox Code Playgroud)
param2这里已经给出了默认值。是否有任何机制可以确定param2是明确设置为其默认值false还是自动传递?换句话说,从 function 内部func,是否可以区分以下两个调用?我正在使用 Microsoft Visual C++ 编译器。
func(1, false);
Run Code Online (Sandbox Code Playgroud)
和
func(1);
Run Code Online (Sandbox Code Playgroud) 我有点困惑.如果SSL证书有助于识别您是否已连接到受信任的服务器,那么为什么需要使用加密(HTTPS)连接?我可以使用SSL证书进行HTTP连接吗?
我想使用 Qt 和 C++ 制作这样的交互式图形:http : //jsxgraph.uni-bayreuth.de/wiki/index.php/Cubic_spline_interpolation
关于如何做到这一点的任何线索?
编辑:好的,我已经尝试过 QGraphicsView 类和 qwt 库。然而,我发现没有简单的方法来引入交互性。有没有一种简单的方法可以做到这一点?
我对C++没有太多经验,我对Qt文档中的以下几行有疑问:http://qt-project.org/doc/qt-4.8/mainwindows-application-mainwindow-h.html(第4行-6在顶部评论后)
class QAction;
class QMenu;
class QPlainTextEdit;
Run Code Online (Sandbox Code Playgroud)
由于QAction,QMenu和QPlainTextEdit是Qt的库类(点击它们导致他们的文档页面),不应该使用'#include'包含它们吗?用关键字"class"声明它们的目的是什么?据我所知,编译器会将它视为一个全新的类,与库类QAction无关.
但是,'mainwindow.cpp'文件(http://qt-project.org/doc/qt-4.8/mainwindows-application-mainwindow-cpp.html)不包含任何类QAction的定义,尽管它的对象是在代码中使用.
这里发生了什么 ?
编辑:进一步解释问题
查看MainWindow类的createActions方法(http://qt-project.org/doc/qt-4.8/mainwindows-application-mainwindow-cpp.html).这里正在创建类QAction的对象,但我无处可找到QAction类的定义.