小编Nul*_*ull的帖子

如何使用位移来代替整数除法?

我知道如何为2的权力做到这一点,所以这不是我的问题.

例如,如果我想使用位移而不是整数除法找到5%的数字,我将如何计算?

因此,我可以做(x*100 >> 11)而不是(x*20/19).现在这不对,但它很接近,我通过反复试验来到它.我如何确定最可能使用的精确班次?

c++ bit-manipulation integer-division

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

boost :: shared_ptr和动态强制转换

我使用shared_ptr基类的问题,我似乎无法在解除引用它时调用派生类的方法.我相信代码会比我更冗长:

class Base : public boost::enable_shared_from_this<Base>
{
  public:
    typedef  boost::shared_ptr<BabelNet> pointer;
};

class Derived : public Base
{
  public:
     static pointer  create()
                {
                        return pointer(new Derived);
                }
     void             anyMethod()
     {
        Base::pointer foo = Derived::create();
        // I can't call any method of Derived with foo
        // How can I manage to do this ?
        // is dynamic_cast a valid answer ?
        foo->derivedMethod(); // -> compilation fail
     }

};
Run Code Online (Sandbox Code Playgroud)

c++ boost dynamic-cast boost-smart-ptr

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

Boost(C++)中没有类跟踪的派生类序列化

通过基类指针序列化派生类时,我遇到了一些boost序列化问题.我需要一个系统,它在系统中接收某些对象时将其序列化,因此我需要随着时间的推移进行序列化.这不是一个真正的问题,因为我可以boost::archive::binary_oarchive在需要时打开并序列化对象.我很快注意到boost是通过内存地址执行对象跟踪,所以第一个问题是共享相同内存地址的不同对象被保存为同一个对象.这可以通过在所需的派生类中使用以下宏来修复:

BOOST_CLASS_TRACKING(className, boost::serialization::track_never)

这样可以正常工作,但同样,当基类不是抽象类时,基类没有正确序列化.在以下示例中,基类序列化方法仅使用第一个对象调用一次.在下文中,boost假定此对象之前已被序列化,尽管该对象具有不同的类型.

#include <iostream>
#include <fstream>
#include <boost/serialization/export.hpp>
#include <boost/serialization/base_object.hpp>
#include <boost/serialization/list.hpp>
#include <boost/serialization/map.hpp>
#include <boost/serialization/vector.hpp>
#include <boost/serialization/shared_ptr.hpp>
#include <boost/archive/archive_exception.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>

using namespace std;

class AClass{
public:
    AClass(){}
    virtual ~AClass(){}
private:
    double a;
    double b;
    //virtual void virtualMethod() = 0;
private:
    friend class boost::serialization::access;
    template<class Archive>
    void serialize(Archive & ar, const unsigned int version)
    {
        ar & a;
        ar & b;
        cout << "A" << endl;
    }
};
//BOOST_SERIALIZATION_ASSUME_ABSTRACT(Aclass)
//BOOST_CLASS_TRACKING(AClass, boost::serialization::track_never)

class BClass …
Run Code Online (Sandbox Code Playgroud)

c++ serialization boost boost-serialization

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

Doxygen:隐藏私人/受保护的方法......和提示

我正在使用Doxygen为我们的API生成文档,用C#编写.但是,它暴露了私人/受保护的成员.有没有办法隐藏那些?

我想出了如何隐藏文件:EXCLUDE =文件名列表

然而,我需要更多的粒度,从而保护用户免受不必要的API噪音.一个样本Doxygen文件将被赞赏以及提示/技巧.

您使用什么工具从源代码生成API?

我觉得有点遗留在18世纪,因为我在C#中通过C++使用Doxygen.

c# documentation doxygen

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

C/C++:调用没有参数的函数,函数不返回任何内容

为什么不能调用一个不带参数的函数调用函数调用作为不返回任何值的参数(IMHO相当于调用一个不带参数的参数的函数).

例如:

void foo(void) {...}
void bar(void) {...}

foo(bar())
Run Code Online (Sandbox Code Playgroud)

不要误解我的意思,我知道void这不是一个价值,它不能像对待一样.

凭借我的逻辑,这将是有道理的,应该可以做到这一点.我的意思是,为什么不呢?任何争论为什么不可能?

c c++

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

是否可以用C++实现事件?

我想在C++中实现一个C#事件,看看我能否做到.我卡住了,我知道底部是错的,但我发现我最大的问题是......

在这种情况下,如何将()操作员重载为任何内容?我不能?我可以吗?我可以实施一个好的选择吗?Tint func(float)

#include <deque>
using namespace std;

typedef int(*MyFunc)(float);

template<class T>
class MyEvent
{
    deque<T> ls;
public:
    MyEvent& operator +=(T t)
    {
        ls.push_back(t);
        return *this;
    }
};
static int test(float f){return (int)f; }
int main(){
    MyEvent<MyFunc> e;
    e += test;
}
Run Code Online (Sandbox Code Playgroud)

c++ templates class operator-overloading

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

使用boost - 将它放在源代码管理中还是让任何开发人员自己安装?

目前,我们在第三方目录下的SVN中使用Boost.问题在于更新整棵树需要花费很多时间,而且我责怪Boost的大量文件(以及其他罪魁祸首).

或者,我可以让任何开发人员自己安装它,但是我必须强迫他们安装到同一个位置(这非常难看......).

什么是首选?如何处理安装位置问题?
还有其他选择吗?

我在Windows下使用VS2008(很快VS2010)(而不是VS2008 ......).

编辑:我们已迁移到VS2010并正在使用属性表.请参阅下面的答案.
Ralf使用批处理文件有很好的非常详细的方法.
其他方法仍然受欢迎...... :)

c++ svn version-control boost

14
推荐指数
2
解决办法
1068
查看次数

通过id从通用列表中删除对象

我有这样的域类:

public class DomainClass
{
  public virtual string name{get;set;}
  public virtual IList<Note> Notes{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我该如何从中删除项目IList<Note>?如果它是一个List我可以做到,但它必须是一个,IList因为我使用Nhibernate作为我的持久层.

理想情况下,我想在我的域类中使用这样的方法:

public virtual void RemoveNote(int id)
{
   //remove the note from the list here

   List<Note> notes = (List<Note>)Notes

   notes.RemoveAll(delegate (Note note)
   {
       return (note.Id = id)
   });
}
Run Code Online (Sandbox Code Playgroud)

但我不能把它IList作为一个List.这周围有更优雅的方式吗?

c# generics compare list

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

按类名获取程序集

有没有办法让包含名称的类的程序集TestClass?我只知道类名,所以我无法创建它的实例.和

Type objectType = assembly.GetType("TestClass");
Run Code Online (Sandbox Code Playgroud)

不适合我.

c# reflection

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

使用.NET中的WS安全性调用Web服务

我需要使用ASP.NET中的WS-Security保护的Web服务.

我正在使用SoapUI测试服务,作为信封请求:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://aduana.gov.py/webservices">
   <soapenv:Header/>
   <soapenv:Body>
      <web:agregarGuia>
         <!--Optional:-->
         <guia>?</guia>
         <!--Optional:-->
         <autenticacion>
            <!--Optional:-->
            <codAduana>?</codAduana>
            <!--Optional:-->
            <firmaWSAA>?</firmaWSAA>
            <!--Optional:-->
            <idUsuario>?</idUsuario>
            <!--Optional:-->
            <ticketWSAA>?</ticketWSAA>
         </autenticacion>
      </web:agregarGuia>
   </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

我得到的回应是:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
   <env:Header/>
   <env:Body>
      <env:Fault>
         <faultcode>env:Server</faultcode>
         <faultstring>org.jboss.ws.core.CommonSOAPFaultException: This service requires &lt;wsse:Security>, which is missing.</faultstring>
      </env:Fault>
   </env:Body>
</env:Envelope>
Run Code Online (Sandbox Code Playgroud)

所以我联系了服务提供商,他们告诉我,必须使用WS-Security来调用服务.因此,发送到服务器的SOAP消息必须使用我的证书进行数字签名.

问题是我不知道该怎么做.到目前为止,我添加了一个服务参考,我在代码中传递了提到的证书:

var srvRef = new DnaSoapClient(); 
srvRef.ClientCredentials.ClientCertificate.Certificate = theCert;
var response = srvRef.agregarManifiesto( dnaManifiesto );
Run Code Online (Sandbox Code Playgroud)

我google了一些,有些人推荐WCF.我正在构建一个ASP.NET 4.5应用程序.这个场景有什么选择?我需要知道如何使用我的证书签署邮件.

编辑1: 我能够推进这个问题,现在我可以发送带有证书签名的SOAP消息,我即将完成任务.现在我无法在安全标签中设置正确的元素,我编辑了问题以显示信封,正确的信封和我的信封.

正确:这是正确请求的样本信封

<soapenv:Header>
  <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="X509-B259DAB3D28E48CB6A140000796019094">MIIC9TCCAd2gAwIBAgIIUiM4nWs8kfcwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UEAwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0UwHhcNMTQwMzIwMTkxMTIwWhcNMTgxMjIwMTQzNzEzWjBBMRQwEgYDVQQDDAtjb3VyaWVyLnRudDEOMAwGA1UECwwFc29maWExDDAKBgNVBAoMA2RuYTELMAkGA1UEBhMCcHkwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOS71x5+ChwGzWs4VlLgkePbU8/zFHUrrE8nFNVsukMCc5q5hCK8/CeNM+mxImilLdJrGoC2/000lQetB9B3AqIrAdOfBFU4/qsAlgWI+kt2jnUsJMLRjQfxhAKMeX4RUb0CmTcsnXtWlFvYFFjiUi9nUJVSxCsmldVFgLIAHRPjAgMBAAGjfzB9MB0GA1UdDgQWBBTCwBBmU7f/4SmNz7GNJ25ILkPuhjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFDF+1hOSdgg2DFOUofnnXdx9TxjeMA4GA1UdDwEB/wQEAwIE8DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQEFBQADggEBAALVVGGNsTSMcfDBwkkNQH3MpfiNTo/mhH8ahqUVN1+5BIwWstv8fH0Sl9ea1XShKLPDfDIx8WSzUUIt/93f74B3a3oMpBtbVEiku2BKUp5cJfkYe2c5zPOxk3nzmQwcEoB++RgX9DJOtUkKA/It2IM9/8ggUyjceJQCpBRiA9Kg7+h3HfmOKNn+9/pNu498JXhSRKa8Jr4pp/1udYRk+W8sKGEBtAU9MvL3y0AbvLhUD+MZyvpHGB17fslC8Nnd5EBQH8hQD+DWGepyCBIlb0NA13YEoLMcRKDcWvSPd0UGWo2G0IOeUZaGuzzIz2n04QrXvnqQKAOFd9yH2VfGtWE=</wsse:BinarySecurityToken>
    <ds:Signature Id="SIG-96" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
      <ds:SignedInfo>
        <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
          <ec:InclusiveNamespaces PrefixList="soapenv …
Run Code Online (Sandbox Code Playgroud)

c# wcf ws-security soap web-services

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