小编Moo*_*ice的帖子

boost :: asio :: async_resolve问题

我正在构建一个使用的Socket类boost::asio.首先,我创建了一个connect方法,它接受了主机和端口并将其解析为IP地址.这很好用,所以我决定去看看async_resolve.但是,我的回调总是得到一个错误代码995(使用与它同步工作时相同的目标主机/端口).

代码:

启动解决方案的功能:

  // resolve a host asynchronously
  template<typename ResolveHandler>
  void resolveHost(const String& _host, Port _port, ResolveHandler _handler) const
  {
   boost::asio::ip::tcp::endpoint ret;
   boost::asio::ip::tcp::resolver::query query(_host, boost::lexical_cast<std::string>(_port));
   boost::asio::ip::tcp::resolver r(m_IOService);
   r.async_resolve(query, _handler);
  }; // eo resolveHost
Run Code Online (Sandbox Code Playgroud)

调用此函数的代码:

  void Socket::connect(const String& _host, Port _port)
  {
   // Anon function for resolution of the host-name and asynchronous calling of the above
   auto anonResolve = [this](const boost::system::error_code& _errorCode, 
           boost::asio::ip::tcp::resolver_iterator _epIt)
   {
    // raise event
    onResolve.raise(SocketResolveEventArgs(*this, !_errorCode ? (*_epIt).host_name() …
Run Code Online (Sandbox Code Playgroud)

sockets asynchronous boost-asio c++11

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

匿名类型的默认(T)行为

我正在针对我们的核心框架编写单元测试,并且遇到了这个问题.

我们有一个扩展方法,如下所示:

    public static T ThrowIfDefault<T>(this T self, string variableName)
    {
        if (self.Equals(default(T)))
            throw new ArgumentException(string.Format("'{0}' cannot be default(T)", variableName));
        return self;
    }   // eo ThrowIfDefault<T>
Run Code Online (Sandbox Code Playgroud)

(ThrowIfNull<>我在Stack Overflow上看到的扩展方法的变体.

在为此编写测试用例时,我首先编写了一个帮助器:

    public void ThrowIfDefaultTestHelper<T>(T value)
    {
        // unit test *itself* requires that a value be specified!!
        Assert.AreNotEqual(default(T), value);

        // Good test
        GenericExtensionMethods.ThrowIfDefault(value, "value");

        // Bad test
        try
        {
            GenericExtensionMethods.ThrowIfDefault(default(T), "value");
        }
        catch (ArgumentException)
        {
            // Expected result
        }
        catch (Exception)
        {
            throw;
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后是以下内容:

    [TestMethod()]
    public void ThrowIfDefaultTest()
    { …
Run Code Online (Sandbox Code Playgroud)

c# generics unit-testing

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

链接与共享指针一起调用

这可能是一个"最佳实践"问题,但我想确保我以正确的方式解决这个问题.

我有以下课程:

typedef boost::shared_ptr<MyClass> MyClassPtr;

class MyClass final : public boost::enable_shared_from_this<MyClass> {
public:
    /* ctors/dtor ommitted */

    MyClassPtr method1() {
         // does something
         return shared_from_this();
    };

    MyClassPtr method2() {
         // does something
         return shared_from_this();
    };

}; // eo class MyClass
Run Code Online (Sandbox Code Playgroud)

这是因为我想轻松地将呼叫链接在一起:

MyClassPtr ptr(myClassFactory.createMyClass());

ptr->method1()->method2()->methodX();  // etc...
Run Code Online (Sandbox Code Playgroud)

这是shared_from_this()成语的合适用途吗?有没有我不知道的陷阱,或者有更好的方法吗?

c++ boost shared-ptr

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

动态抛出“System.ArgumentException”时“发现不明确的匹配”

考虑这个函数:

static void Throw<T>(string message) where T : Exception
{
    throw (T)Activator.CreateInstance(typeof(T), message, (Exception)null);
}
Run Code Online (Sandbox Code Playgroud)

T正如问题标题所示,给定类型System.ArgumentException,我收到“找到不明确匹配”的运行时错误。查看 的文档ArgumentException,以下是公共构造函数:

ArgumentException()
ArgumentException(string)
ArgumentException(SerializationInfo, StreamingContext)
ArgumentException(string, Exception)
ArgumentException(string, string)
ArgumentException(string, string, Exception)
Run Code Online (Sandbox Code Playgroud)

鉴于我将 2 个参数传递给CreateInstance,并强制null为 null Exception,我很难理解为什么它与上面列表中的第四个构造函数不匹配?

.net c# reflection

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

c ++线程划分为微处理器

我有一个问题......我需要构建一个app多线程,我的问题是:如果我有一个2cpu处理器,我的2个线程是自动分开处理器吗?如果我有4个线程并且我的电脑有4cpu,那么每个处理器还有1个吗?如果我有4个处理器和2个cpu,怎么分?

提前致谢

c++ multithreading thread-safety visual-c++

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

这些C#功能的性能影响是什么?

我一直在设计一个基于组件的游戏库,其总体目的是用C++编写它(因为这是我的强项),以Ogre3D作为后端.现在我已经准备好编写一些代码,我认为在XNA4.0框架下测试我的框架会更快(获得结果/编写编辑器等更快一些).然而,尽管我不是初来乍到C++或C#,我感到有点新人当谈到做事的"XNA"的方式,可以这么说,所以我有几个疑问之前,我开始敲定代码:

  1. 我读到了使用数组而不是集合来避免性能命中,然后还读到这不完全正确,如果你枚举一个具体的List<>集合(而不是一个IEnumerable<>),枚举器是一个值类型,它是用于每次迭代,并且没有任何GC担心.有问题的文章早在2007年.这是否成立,或者您是否经历过XNA开发人员对此有真实的陷阱?理想情况下,在我做太多之前,我想先选择一条路线.

  2. 如果阵列真的是要走的路,没有问题,我假设在调整阵列大小时,你用新的空间复制旧阵列?或者这是不是标志?您是否尝试永远不会调整阵列的大小?如果是这种情况,那么GC是否会为旧版本启动,或者是无关紧要的打击?

  3. 由于引擎是为C++设计的,因此该设计允许使用lambdas和delegates.一种设计使用fastdelegate库,这是在C++中使用委托的最快方法.一种更灵活,但速度稍慢的方法(虽然在C++世界中几乎不引人注意)是使用C++ 0x lambdas和std::function.理想情况下,我想在XNA中做类似的事情,并允许使用代理.代表的使用是否会导致性能方面的任何重大问题?

  4. 如果有关于代表的性能考虑因素,那么之间是否存在差异:

    public void myDelegate(int a, int b);
    private void myFunction(int a, int b)
    {
    }
    
    event myDelegate myEvent;
    
    myEvent += myFunction;
    
    Run Code Online (Sandbox Code Playgroud)

VS:

    public void myDelegate(int a, int b);

    event myDelegate myEvent;

    myEvent += (int a, int b) => { /* ... */ };
Run Code Online (Sandbox Code Playgroud)

对不起,如果我有点胡扯,我更愿意明白我的问题.:)

提前致谢!

c# xna

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

输入为0时停止取值

我需要代码,从用户那里获取输入,然后将它们加在一起 ​​- 简单.但是我找不到方法,接受输入直到0被按下并且将数字加在一起..到目前为止,我做了它需要10个值,但就像我说它需要自定义..感谢您的帮助.

int[] myarray = new int[10];
for (int i = 0; i < 10; i++)
{
    myarray[i] = Convert.ToInt32(Console.ReadLine());
}

int a = 0;
for (int j = 0; j < 10; j++)
{
    a = a + myarray[j];
}

Console.WriteLine(a);
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

c# arrays int for-loop

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

getObjByName()应该返回什么?

我正在研究像这样的一些c ++代码:

//c++ code
class MovieInfo;

MovieInfo getMovieInfoByName(String movieName)
{
    //search the movieInfoList with movieName
    if(FOUND)
        return movieInfo;
    //TODO: **what should i return if the movieInfo can't be found in the list?**
} 
Run Code Online (Sandbox Code Playgroud)

问题是如果在列表中找不到movieInfo,我应该返回什么?

c++ class-design return return-value

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

无法删除streamReader.ReadLine添加的反斜杠 - c sharp

我从文件中得到的文字有以下字符串:1"-DC-19082-A3

获得该行后,我得到以下字符串(在调试时得到它):"\"1 \"\" - DC-19082-A3 \""

因为我正在搜索数据库,所以没有任何用途

任何想法我怎么能回到原来的?

我已经看到StreamWriter.WriteLine可以完成这项工作,但我不想为此创建任何文件.

我尝试了以下,但它没有用

StringBuilder sb = new StringBuilder();
sb.Append(@"\");
sb.Append('"');
string strToReplace = sb.ToString();
string lineNumberToSearchFor = lineNumber.Replace(strToReplace, string.Empty);
Run Code Online (Sandbox Code Playgroud)

希望有一个简单的方法来实现这一目标

非常感谢!

c# string streamreader

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

JQuery - 过滤以文本键入的标签

我有这个城市列表(复选框和标签)和一个输入字段:

<input class="search-filter" type="text"/>
<form autocomplete="off" id="city-search-form" name="city-search-form" action="" method="">
   <div id="list" class="multiselect">
      <input id="city-id-1" class="css-checkbox" type="checkbox" />
      <label for="city-id-1" name="" class="css-label">abc</label>

      <input id="city-id-2" class="css-checkbox" type="checkbox" />
      <label for="city-id-2" name="" class="css-label">bce</label>

      <input id="city-id-3" class="css-checkbox" type="checkbox" />
      <label for="city-id-3" name="" class="css-label">cde</label>

      <input id="city-id-4" class="css-checkbox" type="checkbox" />
      <label for="city-id-4" name="" class="css-label">rgp</label>
   </div>
</form>
Run Code Online (Sandbox Code Playgroud)

我正在使用此jquery代码按我键入的单词过滤复选框+标签,但代码不起作用.如何过滤并仅显示以键入的单词开头的标签.

function listFilter(list) {
    var input = $('.search-filter');

    $(input)
    .change( function () {

        var filter = input.val();

        $('.css-label').filter(function(filter) {

            if($('.css-label').text().search(filter) == 0){
                .....hide();
            }
            else {
              .......show();
            }
        }); …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery

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