小编Sam*_*Sam的帖子

在"类定义"中定义的C++成员函数中隐式"内联"

根据C++规范,以下两个类是否等效定义?

class A
{
   void f()
   {
   }
};

class B
{
   inline void f()
   {
   }
};
Run Code Online (Sandbox Code Playgroud)

即,将"内联"限定符放在类定义中定义的成员函数上是完全冗余的吗?

跟随问题:假设它是多余的,对于代码样式,保留"内联"标记是否明智,以便未来的开发人员意识到该函数应该内联,并且不会删除其他地方的定义并删除内联?

谢谢 :)

c++ inline class

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

Open CV中的2D子图像检测

对于以下问题,OpenCV使用哪种最明智的算法或算法组合:

  • 我有一组小的2D图像.我想在更大的图像中检测这些子图像的位置.
  • 子图像通常约为32x32像素,较大的图像约为400x400.
  • 子图像并不总是正方形,因此包含alpha通道.
  • 可选地 - 较大的图像可以是颗粒状的,压缩的,3D旋转的,或者稍微变形的

我尝试过cvMatchTemplate,结果很差(很难正确匹配,大量的误报,所有的匹配方法).一些问题来自OpenCV似乎无法处理alpha通道模板匹配的事实.

我尝试过手动搜索,看起来效果更好,并且可以包含alpha通道,但速度非常慢.

谢谢你的帮助.

opencv image-processing template-matching

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

主人的Git子模块

我是git子模块的新手,我注意到它们总是引用特定的提交.

有没有办法让超级项目的子模块始终引用主分支的头部,因此超级项目中的"git submodule update"或"git pull"只是对所有子模块执行"git pull".

谢谢.

git git-submodules

7
推荐指数
2
解决办法
1982
查看次数

如何将C++类转换为内部类型

基本的C++类问题:

我目前有简单的代码,看起来像这样:

typedef int sType;
int array[100];

int test(sType s)
{
  return array[ (int)s ];
}
Run Code Online (Sandbox Code Playgroud)

我想要的是将"sType"转换为类,这样就不需要改变"return array [(int)s]"行.例如(伪代码)

class sType
{
  public:
    int castInt()
    {
      return val;
    }
    int val;
}


int array[100];    
int test(sType s)
{
  return array[ (int)s ];
}    
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

c++ casting intrinsics

6
推荐指数
2
解决办法
5541
查看次数

来自C / C ++应用程序的Android ADB API

我想通过c / c ++应用程序与Android手机上的adb服务通信(通过USB)。

它必须是“快速的”,因此不需使用shell运行Java程序。

是否有任何示例可以完成此操作,以及用于此类连接的API?

谢谢。

c c++ android adb

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

从C++中获取矢量指针

有没有一种简单的方法来创建一个指向矢量元素的指针向量?

即比下面容易

std::vector<T*> fn(std::vector<T> &v)
{
  std::vector<T*> r;

  for (int i = 0; i < v.size(); i++)
  {
    r.push_back(&v[i]);
  }

  return r;
}
Run Code Online (Sandbox Code Playgroud)

编辑:通过引用传入的向量

c++ stl vector

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

C++类中的静态Const初始化结构数组

我理解如果我想在C++的类命名空间中使用const数组,我不能这样做:

class c
{
private:
  struct p
  {
    int a;
    int b;
  };
  static const p pp[2];
};

const c::p pp[2] =  { {1,1},{2,2} };

int main(void)
{
  class c;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我必须这样做:

class c
{
public:
  struct p
  {
    int a;
    int b;
  };
  static const p pp[2];
};

const c::p pp[2] =  { {1,1},{2,2} };

int main(void)
{
  class c;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我希望它们是私有的时,这需要"p"和"pp"公开.在C++中没有办法初始化私有静态数组吗?

编辑:-------------------谢谢你的答案.另外我希望这个类只是一个库,只有头文件,供主项目使用.当包含多个文件时,包括以下初始化程序会导致"多个定义"错误.

const c::p c::pp[2] =  { {1,1},{2,2} };
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

c++ arrays initialization class

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