问题列表 - 第40937页

为什么const_cast需要说明你要投射的内容?

根据标准(§5.2.11),const_cast抛弃了cv-qualifiers(const或volatile).

这是一个简单的例子.首先,您声明两个函数采用指针和引用:

class Bar { ... };
void foo_ptr(Bar*);
void foo_ref(Bar&);
Run Code Online (Sandbox Code Playgroud)

然后你创建一个引用到const:

Bar b;
const Bar& cb = b;
Run Code Online (Sandbox Code Playgroud)

然后你可以使用适当的const_cast调用任一函数:

foo_ptr(const_cast<Bar*>(&cb));
foo_ref(const_cast<Bar&>(cb));
Run Code Online (Sandbox Code Playgroud)

这是我的问题:由于const_cast无法完成其他演员的设计,你投射的内容不是很明显吗?换句话说,为什么语言不允许我简单地说:

foo_ptr(const_cast<>(&cb));
foo_ref(const_cast<>(cb));
Run Code Online (Sandbox Code Playgroud)

我只能想到以下两个原因:

a)当我尝试做一些疯狂的事情时,编译器应该阻止我,例如:

foo_ptr(const_cast<int*>(&cb));
foo_ref(const_cast<int&>(cb));
Run Code Online (Sandbox Code Playgroud)

并强迫我明确说明我正在施放的类型,然后可以防止行为不端.我发现这个(假设的)解释很弱,因为如果语言偏好允许我写下错误只是为了让编译器纠正我,这将是奇怪的.

b)如果变量既是const又是volatile,则可能存在歧义.在这种情况下,编译器无法告诉我是否试图抛弃一个或另一个(或两者).

这是为什么,还是有其他原因?

c++ standards casting

4
推荐指数
1
解决办法
801
查看次数

是否可以拥有来自同一基类的不同对象数组?

我正在尝试为游戏设计武器类.这是我提出的满足我需求的一些代码:

class weapon {

 public:
  int fireRate;
  int bulletDamage;
  int range;
  ofImage sprite;
  ofImage bulletSprite;
  bullet bullets[50];
  int activeBullet;

 public:
  void fire();
};

class machineGun: public weapon {
 public: 
  void fire();
};

class flamer: public weapon {
 public: 
  void fire();
};
Run Code Online (Sandbox Code Playgroud)

然后我想定义一个像这样的武器数组:

//Weapon variables
const int totalWeapons = 2;
int currentWeapon = 1;
weapon weapons[totalWeapons];
Run Code Online (Sandbox Code Playgroud)

我希望element [0]代表machineGun类,而element [1]代表flamer类.我是否正确地解决了这个问题?我应该以某种方式重构这个吗?我如何实现一个拥有这两种不同武器的阵列?

这个想法是这样的,当我打电话给weapons[0].fire();我得到一个机枪类,当我打电话给weapons[1].fire();我时,我得到了火焰.




编辑:谢谢你的帮助.我在使用"weapon [0] = new machineGun;"时遇到了一些问题.当我尝试运行此代码时,我收到错误"无法分配常量大小为0的数组".

有没有人知道为什么这不起作用?我更新的代码看起来像这样:

//Weapon variables
const int totalWeapons = 2;
int currentWeapon = …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism

5
推荐指数
2
解决办法
6102
查看次数

从URL下载Qt中的文件

在我的程序中,我需要下载一个文件,我发现了这篇文章:

http://www.java2s.com/Code/Cpp/Qt/DownloadfromURL.htm

这段代码确实有效,但它不适合我的程序,所以我重新编写了它.我还没有完成所有这些,但我已经编码了基础知识.但是,当我测试它时,会弹出一个发送错误报告窗口.

到目前为止这是我的代码:

QtDownload.h

#include <QObject>
#include <QString>
#include <QNetworkAccessManager>
#include <QNetworkReply>


class QtDownload : public QObject
{
    Q_OBJECT
public:
    explicit QtDownload();
    ~QtDownload();

    void setTarget(const QString& t);

private:
    QNetworkAccessManager manager;
    QNetworkReply* reply;
    QString target;
    void connectSignalsAndSlots();

signals:

public slots:
    void download();
    void downloadFinished(QNetworkReply* data);
    void downloadProgress(qint64 recieved, qint64 total);
};
Run Code Online (Sandbox Code Playgroud)

QtDownload.cpp

#include "qtdownload.h"

#include <QUrl>
#include <QNetworkRequest>
#include <QFile>

QtDownload::QtDownload()
    : QObject(0)
{
    this->connectSignalsAndSlots();
}

QtDownload::~QtDownload()
{
    if (reply != 0)
        delete reply;
}

void QtDownload::connectSignalsAndSlots()
{
    QObject::connect(&manager, SIGNAL(finished(QNetworkReply*)),this, …
Run Code Online (Sandbox Code Playgroud)

c++ qt qt4

8
推荐指数
1
解决办法
2万
查看次数

Lucene模糊搜索客户名称和部分地址

我正在通过所有现有问题的帖子,但无法得到一些相关的东西.

我有人数名,姓,地址1,地址2,国家代码,出生日期的数百万条记录的文件 - 我想每天检查我的客户名单(我的客户名单也每天更新和文件也每天更新).

对于名字和姓氏,我想模糊匹配(可能是lucene fuzzyquery/levenshtein距离90%匹配),对于剩余字段国家和出生日期我想要完全匹配.

我是Lucene的新手,但通过查看帖子的数量,看起来很可能.

我的问题是:

  • 我该如何索引输入文件?我需要在FN,LN,country,DOB的组合上构建索引并使用索引进行搜索
  • 我怎么能在这里使用Lucene的模糊查询?

还有其他方法可以实现吗?

lucene fuzzy-search

7
推荐指数
1
解决办法
5813
查看次数

PHP用户名验证

我正在编写PHP登录系统.我有我需要的所有工作,但我想验证在注册期间输入的用户名只包含字母数字字符.那么我怎么能拿一个变量,比如$ username,并确保它只包含字母数字字符?

php

6
推荐指数
3
解决办法
3万
查看次数

将SimpleAdapter与Spinner一起使用

我是Android开发的新手.我试图通过使用SimpleAdapter填充一个微调器.但是微调器的列表显示空白元素.当我单击任何元素时,其文本在Toast中正确显示.请告诉我下面的代码中有什么问题.

 public void onCreate(Bundle savedInstanceState) {

  private List<Map<String, String>> data = new ArrayList<Map<String, String>>();

  String[] from = new String[] { "colorsData" };
  int[] to = new int[] { R.id.spinner };

  String[] colors = getResources().getStringArray(R.array.colorsData);

  for (int i = 0; i < colors.length; i++) {
   data.add(addData(colors[i]));
  }

  Spinner spinner = (Spinner) findViewById(R.id.spinner);

  SimpleAdapter simpleAdapter = new SimpleAdapter(this, data, android.R.layout.simple_spinner_item, from, to);
  simpleAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  spinner.setAdapter(simpleAdapter);

  spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
   @Override
   public void onItemSelected(AdapterView<?> parent, View view,
     int position, long id) {
    Toast.makeText(
      parent.getContext(),
      "Selected …
Run Code Online (Sandbox Code Playgroud)

android spinner simpleadapter

7
推荐指数
1
解决办法
1万
查看次数

如何从PHP数组中获取单个值

print_r($myarray)

Array
(
    [0] => Array
    (
        [id] => 6578765
        [name] => John Smith
        [first_name] => John
        [last_name] => Smith
        [link] => http://www.example.com
        [gender] => male
        [email] => email@domain.com
        [timezone] => 8
        [updated_time] => 2010-12-07T21:02:21+0000
    )
)
Run Code Online (Sandbox Code Playgroud)

问题,如何获得$myarray单值如:

echo $myarray['email'];  will show email@domain.com
Run Code Online (Sandbox Code Playgroud)

php arrays

67
推荐指数
4
解决办法
37万
查看次数

开关的未定义行为

给出以下代码:

#include<stdio.h>
int main()
{
    int a=1;
    switch(a)
    {   int b=20;
        case 1: 
            printf("b is %d\n",b);
            break;
        default:
            printf("b is %d\n",b);
            break;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

您认为b这两种printf陈述中的价值是什么?当然,它不是20.

c

1
推荐指数
1
解决办法
169
查看次数

性能:XDocument与XmlDocument

现在,我意识到此前提出过这类问题(特别是这个 - 我认为这是对两个对象的非常好的描述).我的问题更多是围绕表现.我有几个XML文档,大小超过100 - 300 K. 我注意到将这些信息加载到一个XDocument而不是一个XmlDocument对象时会有一些延迟.这两个对象之间是否存在严重的性能差异?他们是否以不同方式访问XML的内容?使用XML字符串时,这是首选的,或者是有区别的.这些对象的最终用途是XPath在有问题的对象上运行查询(或LINQ,取决于).

同样,这主要是性能问题,涉及内存和速度.

.net xml performance xmldocument linq-to-xml

18
推荐指数
2
解决办法
2万
查看次数

Xcode和预处理器##

在Xcode中,我可以在宏中使用##吗?

在MSVC中我可以写:

#define FOO(_var) int foo##_var## = 1

    FOO(bar);
    foobar++;
Run Code Online (Sandbox Code Playgroud)

在Mac上(编辑:用GCC编译)相同的代码给我错误"粘贴"foobar"和"="没有给出有效的预处理令牌.在xcode中不支持##吗?

xcode preprocessor

2
推荐指数
1
解决办法
6877
查看次数