小编pau*_*ons的帖子

C++类扩展

有没有办法向类添加新方法,而不修改原始类定义(即包含类和相应的.h文件的编译.lib),如C#的类扩展方法?

c++ extension-methods class

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

sed排除目录

我尝试使用*作为文件名使用sed一次替换多个文件.但是它也试图处理目录,并给出错误并终止.有一种简单的方法可以解决这个问题吗?

sed

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

使用类成员函数作为回调

在PortAudio的C++绑定中,有一个MemFunCallBackStream构造函数,可以调用为:

portaudio::MemFunCallbackStream<MyClass> streamRecord(paramsRecord, 
                                                     *AnInstanceOfMyClass,
                                                     &MyClass::MemberFunction);
Run Code Online (Sandbox Code Playgroud)

其中最后一个参数是回调函数.但是,如果不在参数编译器上使用&运算符,则会失败 但据我所知,参数在获取函数指针中使用的函数地址时是可以省略的.这与C回调函数和ptr有什么不同.到了.句法?

c++ callback

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

NetworkStream.DataAvailable与TcpClient.Available

在以下场景中;

System.Net.Sockets.TcpClient TC = SomeHowObtained;
System.Net.Sockets.NetworkStream NS = TC.GetStream();
Run Code Online (Sandbox Code Playgroud)

使用NS.DataAvailable和检查有什么区别TC.Available > 0吗?

c# networkstream tcpclient

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

C++重定向输出

有没有办法在代码中重定向c ++输出?情况就是这样,我正在使用一些外部的.cpp和.h文件,这些文件使用printf来向控制台发出警告.我希望将"仅"这些输出(不是我的)重定向到"不"修改其代码的文件.

所以; 在我的程序中,我可以将输出重定向到一个文件,当我将一些输出重定向再次输出到默认控制台,之后再将其重新定位到文件,等等......

可能吗?

c++ redirect

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

strtok给出分段错误

为什么下面的代码给出了Seg.最后一行出错?

char* m=ReadName();
printf("\nRead String %s\n",m); // Writes OK
char* token;
token=strtok(m,'-');
Run Code Online (Sandbox Code Playgroud)

如上所述,读取字符串打印没有问题,但为什么不能拆分为令牌?

c string segmentation-fault

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

TcpClient TimeOuts与NetworkStream TimeOuts

在以下通用场景中:

System.Net.Sockets.TcpClient TC = SomeHowObtained;
System.Net.Sockets.NetworkStream NS = TC.GetStream();
Run Code Online (Sandbox Code Playgroud)

据我所知,有3次超时:

NS.ReadTimeout // 1
TC.SendTimeout // 2
TC.ReceiveTimeout // 3
NS.WriteTimeout // 4
Run Code Online (Sandbox Code Playgroud)

在行为意义上是(1)=(3)和(2)=(4)?文档没有给出提示.

c# timeout networkstream tcpclient

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

在派生类中可克隆

假设我有一个类A,B它来自A:

class A : ICloneable
{
    public object Clone() {...}
}

class B : A, ICloneable
{
    public object Clone() {...}
}
Run Code Online (Sandbox Code Playgroud)

这使

'B.Clone()' hides inherited member 'A.Clone()'. Use the new keyword if hiding was intended.
Run Code Online (Sandbox Code Playgroud)

警告.

(1)建议的方式是什么?使用new或声明A.Clone()virtualoverrideB

(2)如果有一些成员进入A并正确克隆A.Clone(),是否有一种简单的方法可以克隆它们,B.Clone()还是我必须明确克隆它们B.Clone()

c# icloneable

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

C++使用类方法作为函数指针类型

在C lib中,有一个函数在等待函数指针,这样:

lasvm_kcache_t* lasvm_kcache_create(lasvm_kernel_t kernelfunc, void *closure)
Run Code Online (Sandbox Code Playgroud)

其中lasvm_kernel_t定义为:

typedef double (*lasvm_kernel_t)(int i, int j, void* closure);
Run Code Online (Sandbox Code Playgroud)

现在,如果我将类中定义的方法发送到lasvm_kcache_create:

double cls_lasvm::kernel(int i, int j, void *kparam)
...
lasvm_kcache_t *kcache=lasvm_kcache_create(&kernel, NULL);
Run Code Online (Sandbox Code Playgroud)

我得到:"无法将'double(cls_lasvm :: )(int,int,void)'转换为'double()(int,int,void)'"

我该怎么办?

c++ function-pointers

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

MATLAB的"SIGMA必须是对称且肯定的"错误有时没有意义

我不确定这是一个编程或统计问题,但我确定应该有一个数值问题.因此,可能会提出一种程序化解决方案.

我正在使用MATLAB的mvnpdf函数来计算某些观测值的多变量高斯PDF.经常我得到"SIGMA必须是对称且肯定的"错误.

但是,我从数据中获取了covarince矩阵,因此数据应该是合法的.重新生成问题的代码是:

err_cnt = 0;
for i = 1:1000
    try 
        a = rand(3); 
        c = cov(a); 
        m = mean(a); 
        mvnpdf(a, m, c);
    catch me
        err_cnt = err_cnt + 1;
    end
end
Run Code Online (Sandbox Code Playgroud)

每次跑步都会出现约500-600个错误.

PS我不会在我的情况下生成随机数据,只是在这里生成来演示.

matlab numerical probability

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