小编Sem*_*exB的帖子

带有条件类型名的模板类

我想有一个模板类(如float/double类型),但我使用Nvidia的CUDAOptix公司和有多个其他类型(例如float2double2float3,...)依赖于所选择的模板类型。

像这样的东西:

#include <optixu/optixu_vector_types.h>
#include <type_traits>

template <class T>
class MyClass 
{
   MyClass()
   {
      if (std::is_same<T, float>::value) 
      {
         typedef optix::float2 T2;
      }
      else if (std::is_same<T, double>::value)
      {
         typedef optix::double2 T2;
      }

      T2 my_T2_variable;
   }

   void SomeFunction() 
   { 
      T2 another_T2_variable; 
   };
};
Run Code Online (Sandbox Code Playgroud)

我现在的解决方案是有多个模板参数MyClass<T,T2,T3> my_object;,但这似乎有太多的开销和混乱。有没有办法使用上述所需的单个模板参数实现相同的目标?

c++ templates class class-template c++11

19
推荐指数
3
解决办法
1191
查看次数

在 Qt Creator 的 CMake 项目中添加 CMake 项目作为子项目

我有一个如下所示的目录布局

projectA/
|-- CMakeLists.txt
|-- src/
    |-- main.cpp
projectB/
|-- CMakeLists.txt
|-- src/
    |-- file1.cpp
    |-- file1.hpp
    |-- file2.hpp
    |-- main.cpp
|-- third_party/
    |-- include
        |-- lib1
Run Code Online (Sandbox Code Playgroud)

我在 Qt Creator 中成功打开了这两个项目(使用 Ctrl+O 并打开CMakeLists.txt文件),它们能够独立构建和运行。

我需要访问file1.Xppfile2.hppprojectA. Qt Creator 有没有办法projectBprojectA. 人们可能会记住这一点,file1.Xpp并且file2.hpp可能依赖于第三方库。

使用Ctrl+N-> Other Project->Subdirs Project我可以添加一个子项目,但如果我没记错的话,只能添加一个空的。

c++ qt cmake qt-creator

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

C++中的默认值取决于其他输入参数

在声明中看起来像这样的东西是不可能的:

void func(float a, int b=int(a+1)){/*do stuff*/}
Run Code Online (Sandbox Code Playgroud)

基本上,我想要默认值b取决于a.除了重载之外,还有适当的解决方法func吗?

c++ default-value

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

c ++将int转换为char +将前导零添加到char

我从0到999得到了数字.我怎样才能实现以下目标

int i = 123;//possible values 0-999
char i_char[3] = /*do conversion of int i to char and add 3 leading zeros*/
Run Code Online (Sandbox Code Playgroud)

示例:i_char看起来像是"001"for i=1,"011"for i=11"101"fori=101

c++ type-conversion leading-zero

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