问题列表 - 第14402页

typedef vs c ++元编程中的公共继承

免责声明:问题与继承而不是typedef完全不同,到目前为止我找不到任何类似的问题

我喜欢玩c ++模板元编程(在家里大多数情况下,我有时会在工作中轻轻地介绍它,但我不希望程序只对任何不打扰学习它的人都可读),但是我一直在每当出现问题时都会被编译器错误搞清楚.

问题是当然c ++模板元编程基于模板,因此当你在深层嵌套的模板结构中得到编译器错误时,你必须在10行错误消息中挖掘你的方式.我甚至习惯于在文本编辑器中复制/粘贴消息,然后缩进消息以获得一些结构,直到我了解实际发生的事情,这增加了一些跟踪错误本身的工作.

据我所知,问题主要是由于编译器以及它如何输出typedef(还有其他问题,如嵌套的深度,但它并不是编译器的错误).即将发布的C++ 0x宣布了可变参数模板或类型演绎(自动)等酷炫功能,但我真的希望有更好的错误消息来启动.使用模板元编程可能会让人感到痛苦,而且我确实想知道当更多人真正进入它们时会发生什么.

我已经替换了代码中的一些typedef,而是使用了继承.

typedef partition<AnyType> MyArg;

struct MyArg2: partition<AnyType> {};
Run Code Online (Sandbox Code Playgroud)

这不是更多的字体,我认为这并不是那么可读.实际上它甚至可能更具可读性,因为它保证声明的新类型看起来接近左边距,而不是在右边的未确定偏移处.

然而,这涉及另一个问题.为了确保我没有做任何愚蠢的事情,我经常编写模板函数/类,如下所示:

template <class T> T& get(partition<T>&);
Run Code Online (Sandbox Code Playgroud)

这样我就确定只能为合适的对象调用它.

特别是当重载运算符(如operator +)时,您需要某种方法来缩小运算符的范围,或者冒着为int调用它的风险.

但是,如果这适用于typedef类型,因为它只是一个别名.它肯定不适用于继承......

对于功能,可以简单地使用CRTP

template <class Derived, class T> partition;

template <class Derived, class T> T& get(partition<Derived,T>&);
Run Code Online (Sandbox Code Playgroud)

这允许知道在编译器使用公共继承之前用于调用方法的"真实"类型.应该注意,这减少了必须调用此特定函数的机会,因为编译器必须执行转换,但到目前为止我从未注意到任何问题.

此问题的另一个解决方案是向我的类型添加"标记"属性,以区分它们,然后依靠SFINAE.

struct partition_tag {};

template <class T> struct partition { typedef partition_tag tag; ... };

template <class T>
typename boost::enable_if<
  boost::same_type<
    typename T::tag,
    partition_tag
  >,
  T&
>::type
get(T&)
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

它需要更多的打字,特别是如果一个人在不同的地方声明并定义了函数/方法(如果我不打扰我的界面很快就会混乱).但是,当涉及到类时,由于没有执行类型转换,它确实变得更复杂:

template <class …
Run Code Online (Sandbox Code Playgroud)

c++ metaprogramming

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

帮助简单的JavaScript php/js数组

有人可以告诉我这段代码有什么问题吗?基本上我正在做的是为一些GET变量创建一个php数组.然后,我从该php数组创建一个js数组并将其传递给js函数.问题是没有调用该函数.我没有看到弹出"hi"警告.

<script type="text/javascript">
function change_values(js_array)
{
    alert("hi");
}
</script>
<?php

$first_date_month   = @$_GET["first_date_month"];
$last_date_month    = @$_GET["last_date_month"];
$resume_date_month  = @$_GET["resume_date_month"];
$pay_date_month     = @$_GET["pay_date_month"];

$first_date_day     = @$_GET["first_date_day"];
$last_date_day      = @$_GET["last_date_day"];
$resume_date_day    = @$_GET["resume_date_day"];
$pay_date_day       = @$_GET["pay_date_day"];

$pay_time_hour      = @$_GET["pay_time_hour"];
$pay_time_minutes   = @$_GET["pay_time_minutes"];

$args = array($first_date_month, $first_date_day, $last_date_month, $last_date_day, $resume_date_month, $resume_date_day, $pay_date_month, $pay_date_day, $pay_time_hour, $pay_time_minutes);

print_r($args);

echo "<script language='text/javascript'>\n";
echo "var js_array = new Array();\n";
foreach($args as $key => $value)
  echo "js_array[$key] = $value;\n";
echo "change_values(js_array)\n";
echo "</script>\n";
Run Code Online (Sandbox Code Playgroud)

一些html源代码可能有助于更好地理解正在发生的事情.

<script type="text/javascript">
function change_values(js_array) …
Run Code Online (Sandbox Code Playgroud)

html javascript arrays

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

PHP OOP和AJAX:如何处理Class中的服务器端?

我正在努力将我的标准PHP项目转换为OOP,但我遇到了关于如何使用PHP类处理AJAX调用的问题.我对我现在这样做的方式不满意.我有一个TillAjax.php文件,我从一个AJAX调用的TillUI.php文件中调用它.

在TillAjax.php文件中,我这样做是为了获取从ajax调用传递的信息.

$till = new Till();
if(isset($_POST['data']))
    $till->doStuff($_POST['data']);
Run Code Online (Sandbox Code Playgroud)

我认为这会破坏OOP.

我使用过ASP.NET MVC,在这里可以调用控制器中的特定操作,而不必检查post值.所以我想知道是否有更聪明的PHP方法来解决上述问题?

php ajax

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

国际象棋AI为GAE

我正在寻找可以在Google App Engine上运行的国际象棋AI.大多数国际象棋AI似乎是用C语言编写的,所以不能在GAE上运行.它需要足够强大才能击败休闲玩家,但足够高效,可以在单个请求中计算移动(小于10秒).

理想情况下,它将用Python编写,以便更容易地与现有代码集成.

我遇到了一些有前途的项目,但看起来并不成熟:

python google-app-engine chess artificial-intelligence

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

输出混乱

考虑以下程序.

#include<iostream>
using namespace std;

class base
{

   public:
     int _bval;

     base():_bval(0){}
};

class derived:public base
{

   public:
     int _dval;

     derived():base(),_dval(1){}
};

int main()
{     

   derived d[5];
   base *p;
   p=d;
   for(int i=0;i<5;++i,++p)
      cout<<p->_bval;

}
Run Code Online (Sandbox Code Playgroud)

上面程序
的输出是01010. 我认为输出将是00000,因为_bval的值被基类构造函数初始化为0(每次).

但为什么输出与00000不同?
我错过了什么?

c++

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

Python:使用多个属性和混合顺序进行列表排序

我必须对具有多个属性的python列表进行排序.我可以轻松地按升序排列所有属性

L.sort(key=operator.attrgetter(attribute))....
Run Code Online (Sandbox Code Playgroud)

但问题是,我已经使用混合配置进行升序/降序......我必须"模仿"一些SQL命令,你可以在那里做一些像"命名ASC,年DESC"的事情.有没有办法在python中轻松实现这一点,而无需实现自定义比较功能?

python sorting list

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

如何在DataGridView中以编程方式设置单元格值?

我有一个DataGridView.一些单元从串口接收数据:我想将数据推入单元,并让它更新底​​层绑定对象.

我正在尝试这样的事情:

SetValueFromSerial (decimal newValue)
{
    dataGridView.CurrentCell.Value = newValue;
}
Run Code Online (Sandbox Code Playgroud)

使用字符串没有帮助:

    dataGridView.CurrentCell.Value = newValue.ToString ();
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我都没有在网格中看到任何内容,并且基础值没有变化.

我在谷歌搜索并在这里搜索,但我没有找到任何东西.(我可能错过了一些东西,也许是显而易见的东西,但我并不是完全懒惰.)

c# datagridview winforms

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

如何删除MySQL数据库中的"相似"但不相同的内容

假设我有这个表:

ID | description
-------------------
5  | The bird flew over the tree.
2  | The birds, flew over the tree
Run Code Online (Sandbox Code Playgroud)

这两行具有"相似"的内容.我如何删除#2?

  1. 我应该为"类似"文本使用什么算法?
  2. 我如何用Python做到这一点?

谢谢!

python mysql string algorithm

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

我的会议会持续多久?

有人可以告诉我我的会话将持续多长时间从下面的数据? - 我不确定哪一个告诉我

session.auto_start  Off Off
session.bug_compat_42   Off Off
session.bug_compat_warn On  On
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value
session.cookie_httponly Off Off
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    no value    no value
session.entropy_length  0   0
session.gc_divisor  1000    1000
session.gc_maxlifetime  1440    1440
session.gc_probability  1   1
session.hash_bits_per_character 5   5
session.hash_function   0   0
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   /var/lib/php/session    /var/lib/php/session
session.serialize_handler   php php
session.use_cookies On  On
session.use_only_cookies    Off …
Run Code Online (Sandbox Code Playgroud)

php session timeout

44
推荐指数
4
解决办法
10万
查看次数

willRotateToInterfaceOrientation未被调用

YES在视图控制器的shouldAutorotateToInterfaceOrientation函数YES中返回,我可以看到正在返回的断点,但是willRotateToInterfaceOrientation没有调用该方法,也没有任何其他旋转方法.好像回来后YES没有任何事情发生!

有任何想法吗?

麦克风

iphone rotation uiviewcontroller uiview

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