问题列表 - 第28917页

为什么C++不允许您请求指向最派生类的指针?

(这个问题应该通过对Stroustrup的引用来回答.)

能够请求指向最派生类的指针似乎非常有用,如下所示:

class Base { ... };
class DerivedA { ... };
class DerivedB { ... };
class Processor
{
  public:
  void Do(Base* b) {...}
  void Do(DerivedA* d) {...}
  void Do(DerivedB* d) {...}
};

list<Base*> things;
Processor p;
for(list<Base*>::iterator i=things.begin(), e=things.end(); i!=e; ++i)
{
    p.Do(CAST_TO_MOST_DERIVED_CLASS(*i));
}
Run Code Online (Sandbox Code Playgroud)

但是c ++中没有提供这种机制.为什么?

更新,激励示例:

假设您没有Base和Derived and Processor,而是拥有:

class Fruit
class Apple : public Fruit
class Orange: public Fruit

class Eater
{
   void Eat(Fruit* f)  { ... }
   void Eat(Apple* f)  { Wash(f); ... }
   void …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance multiple-dispatch rtti dynamic-dispatch

5
推荐指数
4
解决办法
588
查看次数

定时器(System.Threading)线程安全

有谁知道这段代码是否是线程安全的,或者在调用timer2.Change时是否必须使用锁?

Timer timer1 = new Timer(timerCallback1);
Timer timer2 = new Timer(timerCallback2);
timer1.Change(5000, 5000);
timer2.Change(3000, 3000);

public void timerCallback1(object state)
{
    timer1.Change(Timeout.Infinite, Timeout.Infinite);
    timer2.Change(Timeout.Infinite, Timeout.Infinite);

    DoStuff();

    timer1.Change(5000, 5000);
    timer2.Change(3000, 3000);
}
Run Code Online (Sandbox Code Playgroud)

c# multithreading timer

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

缺少project.pbxproj文件

我找不到project.pbxproj文件.谁能告诉我它的位置?

xcode

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

如何在JavaScript中将字符串转换为XML对象?

我知道这个问题已经存在,但它没有给我带来任何好运.

我有一个应用程序通过以下方法加载一个物理XML文档:

jQuery.ajax({
    type: "GET",
    url: fileName,
    dataType: "xml",
    success: function (data) {
        // etc...
    }
});
Run Code Online (Sandbox Code Playgroud)

我解析XML并将其转换为一个字符串,该字符串保存到变量中,以便可以轻松地存储在数据库中.我现在如何将此变量中的数据转换回XML对象,以便可以对其进行解析?

javascript xml jquery

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

游标与SQL中的过程

所以,我刚刚了解了CURSORS,但仍然没有完全掌握它们.游标和程序甚至函数之间有什么区别?

到目前为止,各种示例(DECLARE CURSOR ... SELECT ... FROM ...)最多似乎是一个保存查询的变量.数据是实时的,还是声明光标的快照?

即我有一个表有一行和一个col值为2.我做DECLARE CURSOR ... SELECT*FROM table1然后我插入一个值为3的新行.

当我运行游标时,我会在声明游标之前获取一行,还是两行?

谢谢

sql

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

使用sql计算类型时间的总和

如何计算我的冒号的时间总和称为"timeSpent"具有以下格式:HH:mm in SQL?我正在使用MySQL.

我的专栏类型是时间.

它有这种结构

TimeFrom like  10:00:00           12:00:00     02:00:00
TimeUntil      08:00:00           09:15:00     01:15:00
Time spent      

total time 03:15:00

mysql sql

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

什么时候需要在PHP中使用Classes

我是一个wordpress插件开发人员.我看到许多插件的源代码,许多插件使用"类",有些没有类.

许多巨大的编码插件如"wp-postratings"不使用Classes,而一些小插件使用Classes.

编辑:由于类有私有,公共和受保护的访问说明符,我觉得安全的味道它是否增加了安全性?

除了PHP,其他语言是否需要类?

是否必须使用类?

我需要一些建议.

php security wordpress plugins class

10
推荐指数
2
解决办法
789
查看次数

如何避免标题耦合

我正在努力解决这个问题,因为我似乎无法在网上找到一个好的资源.

我不完全理解这个问题,因为我从未解决过这个问题所以我会尽量把它描述得最好.

前一段时间我遇到了一个问题,即标题被忽略了,因为"它们已被调用一次,因此当它们被另一个文档再次调用时,它被忽略,因此抛出了错误"

我从来没有完全理解,因为你可以多次调用一个标题而不会抛出错误

那么header1.h

#ifndef _FCLASS_
#define _FCLASS_
class firstClass {
     ...//declaration
}

#endif
Run Code Online (Sandbox Code Playgroud)

header2.h

#ifndef _SCLASS_
#define _SCLASS_

#include "header1.h"

class SecondClass:firstClass{
     ...//declaration
}

#endif
Run Code Online (Sandbox Code Playgroud)

header3.h

#ifndef _TCLASS_
#define _TCLASS_

#include "header1.h"
class thirdClass:firstClass{
     ...//declaration
}
#endif
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,header1类被调用了两次,并且不应该抛出任何错误.即使header1被声明一次,它也可以被多个头使用.

所以我的问题是,在什么情况下,如果文件已经被声明一次,文件实际上可以忽略它.

此类问题仅适用于包含标头的.cpp文件吗?

c c++ visual-studio-2008 visual-studio visual-c++

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

有没有编译器支持constexpr?

我想玩,有constexpr没有编译器支持它呢?

c++ c++11

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

MonoTouch部署到iPhone

我使用MonoTouch开发了许多应用程序,并且一直在使用iPhone的模拟器,现在我需要将我的应用程序部署到我的iPhone进行进一步测试.

我从Apple购买了iPhone SDK,但是我找不到如何在我的iPhone上部署和激活MonoTouch应用程序.

有什么指针吗?

iphone xamarin.ios

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