在以下C++代码中:
typedef enum { a, b, c } Test;
int foo(Test test) {
switch (test) {
case a: return 0;
case b: return 1;
case c: return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
编译时发出警告-Wall
,表示控件到达非void函数的结尾.为什么?
一般说来test
示例中的变量可以包含任何值都是正确的.
foo(12354)
不编译:
> test.cpp:15:14: error: invalid conversion from ‘int’ to ‘Test’ > test.cpp:15:14: error: initializing argument 1 of ‘int foo(Test)’
因为12354是不是一个有效的Test
值(虽然它确实会是明文有效Ç,但它不是在C++中).
你肯定可以显式地将任意整数常量强制转换为枚举类型,但是不是认为是未定义的行为吗?
是否有预处理器定义,我可以在#ifdef
检查中使用它来辨别不同版本的C++语言?
这是我的代码
电子邮件正文有一些unicode字符
LSMTP := TIdSMTP.Create(nil);
try
LMsg := TIdMessage.Create(LSMTP);
try
with LMsg do
begin
Subject := Subj;
Recipients.EMailAddresses := Email;
WriteToLog(cInformation,'To: '+Recipients.EMailAddresses);
From.Address := ReplaceVariables(From_Address);
From.Name := ReplaceVariables(From_Name);
Body.Text := EmailMessage;
ContentTransferEncoding := '8bit';
CharSet := 'UTF-8';
ContentType := 'text/plain';
end;
Run Code Online (Sandbox Code Playgroud)
这就是我得到的
Content-Type: text/plain; charset=us-ascii <<<<< WRONG
Content-Transfer-Encoding: 8bit
Date: Fri, 23 Mar 2012 17:53:19 +0000
Run Code Online (Sandbox Code Playgroud)
使用delphi 2009
我在shell脚本中调用了很长的参数列表:
foo-command \
--important-argument $ONE \
--indispensable-flag $ENABLED \
--an-optional-toggle "will probably be commented out some day" \
$ARGUMENTS \
$MORE_ARGUMENTS
Run Code Online (Sandbox Code Playgroud)
我不能在这个多行电话中插入评论,可以吗?
例如,让我们说,我该如何评论该--an-optional-toggle
线?
我怎么能# in sorted order
在之后添加评论$ARGUMENTS
?
无论我尝试什么,octothorp #
符号阴影线延续反斜杠\
,反之亦然.有什么建议吗?
我得到了成员变量'objectCount'的资格错误.编译器还返回'ISO C++禁止非const静态成员的类内初始化'.这是主要类:
#include <iostream>
#include "Tree.h"
using namespace std;
int main()
{
Tree oak;
Tree elm;
Tree pine;
cout << "**********\noak: " << oak.getObjectCount()<< endl;
cout << "**********\nelm: " << elm.getObjectCount()<< endl;
cout << "**********\npine: " << pine.getObjectCount()<< endl;
}
Run Code Online (Sandbox Code Playgroud)
这是包含非const静态objectCount的树类:
#ifndef TREE_H_INCLUDED
#define TREE_H_INCLUDED
class Tree
{
private:
static int objectCount;
public:
Tree()
{
objectCount++;
}
int getObjectCount() const
{
return objectCount;
}
int Tree::objectCount = 0;
}
#endif // TREE_H_INCLUDED
Run Code Online (Sandbox Code Playgroud) 我有一个t
numpy 的2D数组:
>>> t = numpy.array(range(81)).reshape((9,9))
>>> t
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8],
[ 9, 10, 11, 12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23, 24, 25, 26],
[27, 28, 29, 30, 31, 32, 33, 34, 35],
[36, 37, 38, 39, 40, 41, 42, 43, 44],
[45, 46, 47, 48, 49, 50, 51, 52, 53],
[54, 55, 56, 57, 58, 59, 60, 61, 62],
[63, 64, 65, 66, 67, …
Run Code Online (Sandbox Code Playgroud) 根据Qt文档:
QObjects在对象树中组织自己.当您使用另一个对象作为父对象创建QObject时,该对象将自动将其自身添加到父对象的children()列表中.父母取得对象的所有权; 即,它将自动删除其析构函数中的子项.
对于我来说,这意味着当一个QObject被删除时,它会通过并在它存储在子列表中的所有指针上调用delete.
但是,没有必要动态分配子项,并且使用堆栈分配的对象构建QObject树是完全合法的.
根据标准规范,对未指向动态分配对象的指针调用delete是未定义的行为,这可能导致从"无"到程序崩溃的任何内容.
IMO不太可能是QObject,它几乎是几乎整个Qt类集合的主干,依赖于可能产生未定义行为的东西.
那么,QObject在删除时是否区分堆栈和堆分配子项?如果是这样,究竟是怎么回事?
我知道unicode包含来自大多数世界aphabets的所有字符..但是数字呢?它们是否是unicode的一部分?我无法找到直接答案.谢谢
正如主题所读,我想知道是否可以在 RPM 规范文件中使所需的包依赖于某个条件?
例如,检查 shell 语句是否在安装目标上,例如主机正在使用绑定接口,并且仅当 Require 生效时。
我们用来显示图片的Widget是QLabel.我们可以通过设置pixmap属性直接从QtCreator中完成.
我们应该首先创建一个资源文件,然后将该图像添加到该资源文件中.要创建Qt资源文件,我们转到菜单:File> Qt> Qt Resource File.
我们可以使用Qt Creator设置QLabel的图像...
但我想根据用户的一些输入改变图片
我试着做以下事情:
#include "form1.h"
#include "form.h"
#include "ui_form.h"
#include "ui_form1.h"
Form::Form(QWidget *parent) :
QWidget(parent),
ui(new Ui::Form)
{
ui->setupUi(this);
QPixmap * mypix = new QPixmap(":/karim/test.png");
ui->label->setPixmap(mypix);
delete mypix;
}
Run Code Online (Sandbox Code Playgroud)
但我得到了这个错误
..\Project\form.cpp: In constructor 'Form::Form(QWidget*)':
..\Project\form.cpp:12: error: no matching function for call to 'QLabel::setPixmap(QPixmap*&)'
c:\QtSDK\Simulator\Qt\mingw\include/QtGui/qlabel.h:123: note: candidates are: void QLabel::setPixmap(const QPixmap&)
Run Code Online (Sandbox Code Playgroud)
可能是什么问题呢 ?