这是我的代码.
try
{
// code throws potentially unknown exception
}
catch (...)
{
std::exception_ptr eptr = std::current_exception();
// then what ?
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,如果它是std :: exception,我想获得与异常相关联的字符串.
为什么不能以这种方式获得缓冲区的长度.
AType * pArr = new AType[nVariable];
Run Code Online (Sandbox Code Playgroud)
取消分配相同的数组时
delete [] pArr;
Run Code Online (Sandbox Code Playgroud)
运行时必须知道释放多少.在删除数组之前是否有任何方法可以访问该长度.如果不是,为什么没有提供这样的API来获取长度?
我试图将基于整数值的特化作为模板类型.如果我使用单个整数,专业化是直截了当的.是否可以在不使用boost基础的情况下基于范围进行简单的模板专业化.
这是代表性的代码转换为
template <typename int val>
class Param
{
public:
};
template <> class Param<0 to 100>
{
};
template <> class Param<100 to 175>
{
};
Run Code Online (Sandbox Code Playgroud) 我设计了一个C++类,用于从轨迹球旋转,缩放和平移中抽象出用户.我有旋转(使用轨迹球)和缩放按预期工作.但是,平移不会像预期的那样运行.当我选择一个点并拖动时,我希望在完成拖动时,拾取的点继续在鼠标下方.我对透视投影中的平移的理解如下.目标和摄像机位置都将受到平移操作的影响.摄像机目标和摄像机位置(眼睛)应与阻力成比例平移.比例(可能不是常数)应该基于z深度.
在正交投影中平移是直接的,但是在视角方面存在问题.如果可以解释OpenGL的数学和实现细节,将会很有用.
对于需要使用线程跨越的函数,是否可能存在重载?
我有一个名为Complex的简单类.
class Complex
{
public:
Complex():realPart_(0), imagPart_(0){}
Complex(double rp, double ip) : realPart_(rp), imagPart_(ip) {}
double & real() { return realPart_;}
double & imag() { return imagPart_;}
const double & real() const { return realPart_;}
const double & imag() const { return imagPart_;}
double square() const {return realPart_*realPart_ - imagPart_*imagPart_;}
void display() const
{
std::cout << "Square of the Complex number (" << realPart_ << ") + i (" << imagPart_ << " ) is " << square() << …
Run Code Online (Sandbox Code Playgroud) 为什么我们在C++中需要这样的运算符?它在现代C++编程中有何用处?任何可以应用它的真实代码示例都会有所帮助.
这个问题旨在了解现实世界中的实际应用,而无需阅读Herb Sutter的罗嗦提议.尽管如此,对提案没有冒犯.
作为开发人员团队的一员,我想确保在我们发布的自定义迭代器上实现一组函数(和运算符).使用STL迭代器类型作为基本类型有帮助,但是由于某些原因(在我的控制范围之外),我们决定不强制执行STL兼容性.迭代器由同一团队和整个公司的人员使用.
我想设计一个消耗迭代器类型的模板类,并根据设计合同进行测试.
例如,我希望迭代器实现一个operator ++,operator--并声明所需的typedef.
1>是否可以实现强制设计合同的模板类?可能使用static_assert?
2>如果是,这是一个好的设计吗?
reference:自定义迭代器
C++在很大程度上依赖于C风格来导出和导入函数(如果有的话,不是类/接口),从而失去了面向对象的风格,这在许多方面使得导出的界面变得神秘.
可以使用D编程语言以面向对象的方式导出接口.我可以用D接口包装C++(纯)类吗?有哪些可能要考虑的因素?这种方法是否可行.
我正在3D空间中建模一个粒子.
{0}粒子在时间t0从具有速度V0的已知位置P0开始.使用其在t-1处的已知先前P-1位置来计算速度.
{1}粒子的目标是在t1以P1的已知速度进入P1.
{..}粒子尽可能快地移动,没有抖动(C1连续)由一组约束限制,这些约束独立地沿x,y和z钳制加速度.沿x,y和z的最大加速度/减速度是已知的,并且是Xa,Ya和Za.沿x,y和z的最大加速度变化率由Xr,Yr和Zr定义.
{n}在未知的时间步长之后,它在某个时间(比如tn)以速度Vn到达Pn.
{n + 1}它在tn + 1处移动到Pn + 1.
我的问题是计算从P0到Pn的转换的最小时间并产生其中间位置和速度方向.第二个目标是平滑加速,而不是应用加速度导致混乱.
找到从开始P0到结束Pn最长对齐的维度{x,y或z}.这将是关键维度,并将决定总时间.这是相当简单的,我可以写一些这样的效果.
在所有维度中平滑地插入而没有从P0到Pn的抖动,使得Pn处的速度如预期的那样.我不确定,如何处理这个问题.
任何已经执行此操作的输入/物理引擎都将非常有用.这是一个商业项目,我不能依赖具有限制性许可的大型第三方库.
注意:P0和Pn处的粒子几乎没有加速度.
我试图了解如何使用Visual Studio 2012使用新的std :: thread.我正在尝试编译以下代码.
#include <iostream>
#include <thread>
class scoped_thread
{
std::thread t_;
public:
explicit scoped_thread(std::thread & t): t_(std::move(t))
{
if(!t_.joinable())throw std::logic_error("No thread");
}
~scoped_thread()
{
t_.join();
}
private:
scoped_thread(scoped_thread const &);
scoped_thread & operator=(scoped_thread const &);
};
struct local_functor
{
int& i_;
local_functor(int & i):i_(i){}
void operator()()
{
while(i_ < 1e5)i_++;
}
};
// can potentially throw exceptions
void callAnotherFunc()
{
std::cout << "this function can throw an exception" << std::endl;
// try (un)commenting the line below and …
Run Code Online (Sandbox Code Playgroud)