标签: c++

使用enum表示从'int'到'type'的无效转换

在我的课上,我定义了一个这样的枚举:

class myClass 
{
 public:
    enum access {
      forL,
      forM,
      forA
    };
    typedef access AccessType;
    AccessType aType;
};
Run Code Online (Sandbox Code Playgroud)

后来定义了这样一个对象:

myClass ob;
ob->aType = 0;
Run Code Online (Sandbox Code Playgroud)

但是我收到此错误:

error: invalid conversion from 'int' to 'myClass::AccessType {aka myClass::access}' [-fpermissive]

不要将字段映射到整数?

c++ enums

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

C++上的OAuth 2.0(适用于UNIX)

我想知道在C++上OAuth 2.0的最佳实现/库(最好是实现库的示例代码)是什么.应用程序在Linux机器上运行.

如果你可以指出我正确的实施,测试和工作,那将是很好的; 我在网上找到了一些关于Twitter的内容,但我不确定他们是否满足OAuth 2.0而不是OAuth 1.0.

谢谢!

c++ linux oauth oauth-2.0

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

使用光流进行特征跟踪

我在论坛中发现了类似的问题.但那里的答案并没有回答我的问题.

  • 如果我在第一张图像上只进行一次特征检测(goodFeaturesToTrack),然后使用光流(calcOpticalFlowPyrLK)来跟踪这些特征,则问题是:只能跟踪第一张图像上检测到的特征.当这些功能超出图像时,就没有可追踪的功能.

  • 如果我对每个新图像进行特征检测,则特征跟踪不稳定,因为此时可能无法检测到上次检测到的特征.

我正在使用光流进行3D重建.所以我对跟踪哪些功能不感兴趣,相反,我只关心是否可以稳定地跟踪视野中的功能.总而言之,我的问题是:如何使用光流跟踪旧功能,同时添加进入视野的新图像功能并删除超出视野范围的旧功能?

c++ opencv computer-vision

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

QString :: split()和"\ r","\n"和"\ r \n"约定

我明白QString::split应该用来QStringList从多线获得一个QString.但是,如果我有一个文件,我不知道它是来自Mac,Windows还是Unix,我不确定QString.split("\n")在所有情况下是否都能正常工作.处理这种情况的最佳方法是什么?

c++ qt

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

c ++如何从路径字符串中删除文件名

我有

const char *pathname = "..\somepath\somemorepath\somefile.ext";
Run Code Online (Sandbox Code Playgroud)

如何将其转化为

"..\somepath\somemorepath"
Run Code Online (Sandbox Code Playgroud)

c++ filesystems string

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

英特尔AVX:256位版本的点积,用于双精度浮点变量

英特尔高级矢量扩展指令集(AVX)在256位版本(YMM寄存器)中不提供双精度浮点变量的点积."为什么?" 问题已在另一个论坛(此处)和Stack Overflow(此处)进行了简要处理.但我面临的问题是如何以有效的方式用其他AVX指令替换这条缺失的指令?

对于单精度浮点变量,存在256位版本的点积(此处参考):

 __m256 _mm256_dp_ps(__m256 m1, __m256 m2, const int mask);
Run Code Online (Sandbox Code Playgroud)

我们的想法是找到这个缺失指令的有效等价物:

 __m256d _mm256_dp_pd(__m256d m1, __m256d m2, const int mask);
Run Code Online (Sandbox Code Playgroud)

更具体地说,我想从__m128(四个浮点数)转换为__m256d(4个双精度数)的代码使用以下指令:

   __m128 val0 = ...; // Four float values
   __m128 val1 = ...; //
   __m128 val2 = ...; //
   __m128 val3 = ...; //
   __m128 val4 = ...; //

   __m128 res = _mm_or_ps( _mm_dp_ps(val1,  val0,   0xF1),
                _mm_or_ps( _mm_dp_ps(val2,  val0,   0xF2),
                _mm_or_ps( _mm_dp_ps(val3,  val0,   0xF4),
                           _mm_dp_ps(val4, …
Run Code Online (Sandbox Code Playgroud)

c++ performance simd avx

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

c ++排序跟踪索引

你有一些有效的例程来返回数组中带有索引的数组吗?我认为使用stl向量存在一些方便的方法.你是否已经实现了一个没有stl的高效算法,或者你有一个伪代码或C++代码的参考?

感谢致敬

c++ sorting algorithm stl

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

如何在C++ 11中创建一个线程对象数组?

我想学习如何使用新的C++标准库创建多个线程并将其句柄存储到数组中.
我该如何开始一个帖子?
我看到的示例使用构造函数启动一个线程,但如果我使用数组,则无法调用构造函数.

#include <iostream>
#include <thread>

void exec(int n){
    std::cout << "thread " << n << std::endl;
}

int main(int argc, char* argv[]){

    std::thread myThreads[4];

    for (int i=0; i<4; i++){
        //myThreads[i].start(exec, i); //?? create, start, run
        //new (&myThreads[i]) std::thread(exec, i); //I tried it and it seems to work, but it looks like a bad design or an anti-pattern.
    }
    for (int i=0; i<4; i++){
        myThreads[i].join();
    }

}
Run Code Online (Sandbox Code Playgroud)

c++ arrays multithreading constructor c++11

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

将const char*转换为wstring

我正在研究基于锌的闪存应用程序的原生扩展,我需要将a转换const char*为a wstring.

这是我的代码:

mdmVariant_t* appendHexDataToFile(const zinc4CallInfo_t *pCallInfo, int paramCount, mdmVariant_t **params) {

    if(paramCount >= 2) {
        const char *file    = mdmVariantGetString(params[0]);
        const char *data    = mdmVariantGetString(params[1]);

        return mdmVariantNewInt(native.AppendHexDataToFile(file, data));
    }
    else {
        return mdmVariantNewBoolean(FALSE);
    }
}
Run Code Online (Sandbox Code Playgroud)

native.AppendHexDataToFile()需要两个wstring.我对C++并不是很擅长,我认为所有这些不同的字符串类型都令人困惑,我在网上找不到有用的东西.所以我问你们这是怎么做的.

编辑:字符串是UTF-8,我使用的是OSX和Windows XP/Vista/7

c++

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

std :: vector:vec.data()或&vec [0]

当您想要将std :: vector作为C数组访问时,您可以从至少四种不同的方式中进行选择,如本例中所示:

#include <iostream>
#include <vector>

using namespace std;

int main() {
  std::vector<int> vec;
  vec.push_back(1);
  vec.push_back(2);
  vec.push_back(42);
  vec.push_back(24024);
  {
    int* arr = vec.data();
    cout << arr << endl; /* output: 0x9bca028 */
    cout << arr[3] << endl; /* output : 24024 */
  }
  {
    int* arr = &vec.front();
    cout << arr << endl; /* output: 0x9bca028 */
    cout << arr[3] << endl; /* output : 24024 */
  }
  {
    int* arr = &vec[0];
    cout << arr << endl; /* …
Run Code Online (Sandbox Code Playgroud)

c++ arrays vector

24
推荐指数
3
解决办法
9918
查看次数