小编Pra*_*nny的帖子

带有自定义比较函数的 std::sort 函数结果错误:必须调用对非静态成员函数的引用

std::sort在类中定义时,我无法将该函数与我的自定义比较函数一起使用。

class Test {
    private:
        vector< vector<int> > mat;
        bool compare(vector<int>, vector<int>);
    public:
        void sortMatrix();
}

bool Test::compare( vector<int> a, vector<int> b) {
    return (a.back() < b.back());
}

void Test::sortMatrix() {
    sort(vec.begin(), vec.end(), compare);
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

error: reference to non-static member function must be called
        sort(vec.begin(), vec.end(), compare);
                                     ^~~~~~~
Run Code Online (Sandbox Code Playgroud)

然而compare(),当我sortMatrix()在没有任何类的文件 main.cpp 中定义和时,一切正常。我将不胜感激任何帮助和建议。

c++ sorting reference non-static

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

如何从底部开始滚动列表?

我正在研究chatapp,就像大多数chatapps一样,我的应用程序显示了一个消息列表.

  • 该列表是使用生成的ng-repeat.
  • 我已经颠倒了消息,以便最新的位于底部,最旧的位于顶部.

目前,当我的应用加载时,列表向下滚动

$ ionicScrollDelegate

我不喜欢这样做.这不是正确的方法,有时这会在打开我的应用程序时给我一些性能和加载问题.

我想知道是否有另一种强制方式,从底部到顶部开始/渲染列表,而不需要像现在一样将其滚动到底部.

这是我目前使用的代码:
在我的HTML中:

<script type="text/ng-template" id="home.html">
    <ion-view ng-controller="HomeController" title="Home">
        <ion-content>
            <ion-list>
                <ion-item ng-repeat="message in messages track by $index">
                    {{message}}
                </ion-item>
            </ion-list>
        </ion-content>    
    </ion-view>
</script>
Run Code Online (Sandbox Code Playgroud)

在我的app.js:

app.run(function($ionicPlatform, $state, $timeout, $localStorage, $location, $rootScope, $ionicScrollDelegate) {
    document.addEventListener('deviceReady', function() {
        setTimeout(function() {
                $ionicScrollDelegate.scrollBottom(true);
        }, 500);
    });
})
Run Code Online (Sandbox Code Playgroud)

listview scroll angularjs ionic-framework

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

为什么三字母在现代C++编译器中会产生错误?

使用Turbo C++编译的三字符程序的屏幕截图

即使在GCC编译器中,如果没有明确指定trigraph属性,也不会编译三字符.

#include<stdio.h>

int main()
 {
 int a=4;
 if((a==4) ??! (a==5))
   printf("\nHello world!");
 return 0;
 }
Run Code Online (Sandbox Code Playgroud)

保存为try.c的程序仅在我们指定时才在GCC编译器中编译gcc -Wall -trigraphs try.c,并且仍然显示警告.你可以招募一些能够处理和处理三字符而没有任何错误或警告的编译器吗?

c c++ gcc compiler-errors

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

如何为特定模块指定gcc标志(CXXFLAGS)?

我最近正在构建一个新的NS3模块.在我的代码中,我使用了一些新功能C++11 (c++0x),我想"-std=c++0x"waf配置系统中添加一个gcc标志(CXXFLAGS).

我尝试了这个:CXXFLAGS="-std=c++0x" waf configure然后构建它.然而,事实证明,一些现有的模块,如ipv4-address不兼容c++11.因此,我想特别为我的新模块指定此标志,以便其他模块不会在c ++ 11上编译.

我试图在我的新模块中将其添加到wscript :

def configure(conf):
    conf.env.append_value('CXXFLAGS', '-std=c++0x')
Run Code Online (Sandbox Code Playgroud)

它作为第一次试验失败了.

我怎样才能做到这一点?

c++ gcc waf c++11

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

创建具有完全信任权限(包括网络权限)的托管CLR AppDomain

我需要在非托管进程中托管.NET运行时.我有通过COM加载运行时的代码,我可以将程序集加载到AppDomain并执行代码就好了.

但是,我遇到了托管在网络共享上的应用程序的问题,并且必须更改应用程序策略才能让它们执行而不是一个选项.所以我想要做的是将运行时的主AppDomain的权限级别设置为不受限制.

有人可以举例说明如何设置AppDomain策略级别吗?我无法弄清楚如何从非托管代码实例化所需的类来创建PolicyLevel和相关对象并设置策略.基本上我不知道我需要从我使用的C++代码中使用什么包含/命名空间引用.

这是我此时的代码:

/// Starts up the CLR and creates a Default AppDomain
DWORD WINAPI ClrLoad(char *ErrorMessage, DWORD *dwErrorSize)
{
    if (spDefAppDomain)
        return 1;


    //Retrieve a pointer to the ICorRuntimeHost interface
    HRESULT hr = CorBindToRuntimeEx(
                    ClrVersion, //Retrieve latest version by default
                    L"wks", //Request a WorkStation build of the CLR
                    STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN | STARTUP_CONCURRENT_GC, 
                    CLSID_CorRuntimeHost,
                    IID_ICorRuntimeHost,
                    (void**)&spRuntimeHost
                    );

    if (FAILED(hr)) 
    {
        *dwErrorSize = SetError(hr,ErrorMessage);   
        return hr;
    }

    //Start the CLR
    hr = spRuntimeHost->Start();

    if (FAILED(hr))
        return hr;

    CComPtr<IUnknown> pUnk;

    //Retrieve the …
Run Code Online (Sandbox Code Playgroud)

c# c++ clr-hosting security-policy

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

从一个S3读取图像并写入另一个S3时获取Excon :: Errors :: SocketError?

我们有一个临时服务器设置来使用我们的生产服务器中的不同S3存储桶,但这要求我们在存储桶之间手动同步图像以便在暂存时查看图像.由于我们有成千上万的图像(每天增长),这是不可行的.

反正有没有配置Carrierwave从我们的生产S3读取图像,但是将任何新图像写入分段S3(以免污染我们的生产图像存储)?


更新:我已经尝试为CarrierWave创建一个自定义存储引擎来执行此操作(请参阅此要点 -除了第228行之外基本上与雾存储引擎相同),但是在尝试获取时出现此错误图片:

 Excon::Errors::SocketError (hostname does not match the server certificate (OpenSSL::SSL::SSLError)):
   lib/carrier_wave/storage/dual_fog.rb:214:in `exists?'
   lib/carrier_wave/storage/dual_fog.rb:228:in `public_url'
   lib/carrier_wave/storage/dual_fog.rb:267:in `url'
Run Code Online (Sandbox Code Playgroud)

谁知道为什么会这样?正如您从gist中的代码中看到的那样,我希望此解决方案能够从暂存中读取,如果在暂存时未找到图像,则可以回退到生产阶段.但是,所有写操作都应该只进行分段.

amazon-s3 ruby-on-rails-3 carrierwave

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

为什么来自Yahoo Social SDK for PHP的示例代码总是为会话变量返回NULL?

我试图从Yahoo Social SDK for PHP页面获取示例代码,但没有运气.

这是该网站的代码段:

<?php  
  require("Yahoo.inc");  

  // Your Consumer Key (API Key) goes here.  
  define('CONSUMER_KEY', "");  

  // Your Consumer Secret goes here.  
  define('CONSUMER_SECRET', "");  

  // Your application ID goes here.  
  define('APPID', "");  

  $session = YahooSession::requireSession(CONSUMER_KEY,CONSUMER_SECRET,APPID);  
?>  
Run Code Online (Sandbox Code Playgroud)

我设置了CONSUMER_KEY,CONSUMER_SECRETAPPID.$session variable总是为NULL.

在挖掘了yahoo.inc源代码之后,我将问题追溯到这个函数:

function getRequestToken($consumerKey, $consumerSecret, $callback);
Run Code Online (Sandbox Code Playgroud)

特别是在函数中的这个调用:

$response = $client->post($request_url, "application/x-www-form-urlencoded", $parameters);
$request_url: https://api.login.yahoo.com/oauth/v2/get_request_token
$parameters: has my callback url

$response变量null!我认为这是问题的根源.我按原样使用示例代码.所以,我不确定为什么会这样.

有任何想法吗 ??我错过了什么?

php api social yahoo sdk

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

如何在图像切换器中启用捏缩放?

应用程序的界面包含以下项目.

  1. 填充整个屏幕的图像切换器.
  2. 一个next按钮.
  3. 一个previous按钮.

我如何使用pinch zoomingimage Switcher

android imageswitcher pinchzoom

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

捕获Wireshark过滤器的问题

我正尝试使用以下选项从cli启动wireshark ...

wireshark -k -i eth2 -a filesize:1000000 -f <capture filter>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我想使用预定义的wireshark过滤器......当我在cli cmd中运行上面的实际过滤器时,它可以工作,当我使用预定义的过滤器时,它失败了...

工作范例:

wireshark -k -i eth2 -a filesize:1000000 -f "host 40.40.41.42"
Run Code Online (Sandbox Code Playgroud)

失败的例子(我试图使用的那个):

wireshark -k -i eth2 -a filesize:1000000 -f pre-defined-capture1
Run Code Online (Sandbox Code Playgroud)

预定义的capture1过滤器确实显示在"捕获 - >选项 - >捕获过滤器"列表下...

我得到的错误是过滤器无效,我想指定我保存在捕获过滤器列表中的过滤器,如果可能的话......

有任何想法吗?

wireshark

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

C++和CUDA:为什么代码每次都返回不同的结果?

更新:我发现了这个错误.由于我之前发布的代码非常复杂,我简化了它们,只在出现问题时才保留部分.

if (number >= dim * num_points)
    return;
Run Code Online (Sandbox Code Playgroud)

但实际上,我只有num_points,我想使用num_points线程,所以正确的方法应该是

if (number >= num_points)
    return;
Run Code Online (Sandbox Code Playgroud)

谢谢大家的帮助.


我正在从CPU到GPU重写一些C++代码.代码粘贴在下面.对不起,这很长,因为我觉得这样的问题更容易被发现.

在代码中,对于每个线程我都需要一些矩阵格式的中间结果,所以我为这些中间结果分配设备内存,例如d_dir2,d_R,d_Stick,d_PStick.结果证明不是我所期望的,所以为了调试,我尝试以这种方式输出一些中间结果R:

if (k == 0)
 {
 results[tmp_int1 + i * dim + j] = R[tmp_int1 + i * dim + j];
 }

后来在C++中,我打印结果.但是,我发现结果每次都会给出不同的值.有时它会给出正确的答案R,有时候是PStick的值,有时是R和PStick的组合,有时是R和0的组合(结果在开始时初始化为0).

我很困惑是什么导致了这个问题.任何的想法?非常感谢你 :)

__global__ void stickvote(const int dim, const int num_points, const int gridx, float Sigma, float* input, float* dir2, float* R, float* Stick, float* PStick, float* results) {
  float threshold = 4 * Sigma;
  float c = (- 16 * log(0.1f) …
Run Code Online (Sandbox Code Playgroud)

c++ cuda

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