小编Ben*_*igt的帖子

使用语句实现C++等效的C#

我正在寻找一种优雅的解决方案,用于在C++中实现C#using语句的等价物.理想情况下,结果语法应该易于使用和阅读.

C#使用语句详细信息在这里 - http://msdn.microsoft.com/en-us/library/yh598w02(v=vs.80).aspx

我不确定解决方案是使用函数指针与类上的析构函数,某种形式的巧妙模板编程甚至是元模板编程.基本上我不知道从哪里开始......

c# c++ templates using-statement

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

如何`std :: bind()`标准库算法?

我的问题的简短版本是:我如何使用std::bind()标准库算法之类的东西?

由于短版本有点缺乏细节,这里有一点解释:假设我有算法std::transform(),现在我想实现std::copy()(是的,我意识到std::copy()标准C++库中有).由于我很懒惰,我显然想要使用现有的实现std::transform().当然,我可以这样做:

struct identity {
    template <typename T>
    auto operator()(T&& value) const -> T&& { return std::forward<T>(value); }
};  
template <typename InIt, typename OutIt>
auto copy(InIt begin, InIt end, OutIt to) -> OutIt {
    return std::transform(begin, end, to, identity());
}
Run Code Online (Sandbox Code Playgroud)

不知何故,这种实现有点像一种算法的配置.例如,似乎std::bind()应该能够完成这项工作,但只是使用std::bind()不起作用:

namespace P = std::placeholders;
auto copy = std::bind(std::transform, P::_1, P::_2, P::_3, identity());
Run Code Online (Sandbox Code Playgroud)

问题是编译器无法仅从算法中确定适当的模板参数,如果存在&或不存在则无关紧要.有没有什么可以像使用std::bind()工作一样的方法?由于这是期待,我很满意一个解决方案,它已经提出了包含在C++标准中的任何内容.另外,为了摆脱我的懒惰,我很乐意在前面做一些工作,以便以后更容易使用.以这种方式思考:在我作为库实现者的角色中,我会把事情放在一起,这样每个库用户都可以变得懒惰:我是一个忙碌的实现者,但是一个懒惰的用户.

如果您想要一个现成的试验台:这是一个完整的程序.

#include …
Run Code Online (Sandbox Code Playgroud)

c++ c++11 c++14 c++17

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

有没有办法在Visual Studio 2008中的DBML文件中查找表?

这一直困扰着我多年.

回到过去,当我们搜索自己的食物并使用DataSet时,您可以通过从顶部的下拉列表中选择所需内容来捕捉DataSet中的特定表.

如果我有一个很大的'Linq2Sql DBML文件,里面有很多表,那么导航就变成了一场噩梦.有没有办法跳转到特定的表?

dbml linq-to-sql visual-studio

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

为什么这段代码会导致VC++编译器崩溃?

我正在使用以下编译器:

Microsoft Visual C++ 2010

以下代码在编译时崩溃:

template<class T_> 
void crasher(T_ a, decltype(*a)* dummy = 0){}

int main()
{
    crasher(0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

decltype(*a)*用于实施T_是一个指针样型-如char*,int*,和shared_ptr<int>.

为什么会崩溃?这是一个已知的错误?

c++ visual-studio-2010 c++11

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

使用&try/catch嵌套

这个问题更多的是做某事的正确方法......

问题是......在一个using块和一个块之间是否存在正确的嵌套顺序try/catch

是否可以将整个using语句嵌套在a中try/catch并保持using块的好处?(或者异常会导致using语句的结束部分被抛出窗口)

或者,您是否应该try/catchusing语句内部嵌套,并且只包含进行数据库访问的语句?

是...

try {
     using( tsmtcowebEntities db = new tsmtcowebEntities() ) {
          violationList = ( from a in db.DriverTrafficViolationDetails
                            where a.DriverTrafficViolation.DriverApplicationId == DriverAppId
                            orderby a.DateOfOccurance descending
                            select a ).ToList<DriverTrafficViolationDetail>();
          GeneralViolation = ( from a in db.DriverTrafficViolations
                               where a.DriverApplicationId == DriverAppId
                               select a ).FirstOrDefault();
     }
} catch { }
Run Code Online (Sandbox Code Playgroud)

少于/多于......

using( tsmtcowebEntities db = new tsmtcowebEntities() ) {
     try {
          violationList = ( from …
Run Code Online (Sandbox Code Playgroud)

c# using-statement try-catch

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

为什么(1/2)*x与0.5*x不同?

这表现得很好:

double t = r[1][0] * .5;
Run Code Online (Sandbox Code Playgroud)

但这不是:

double t = ((1/2)*r[1][0]);
Run Code Online (Sandbox Code Playgroud)

r 是一个二维矢量.

只是想到了一种可能性.是因为(1/2)被认为是int(1/2) == 0

c c++

10
推荐指数
3
解决办法
9990
查看次数

处理单位安全代码中的字面零

除了极少数例外(看着你,华氏温度和摄氏温度标度),单位是线性的,零值同时是所有单位的附加标识.

所以给定

auto speed = dimensioned(20, _meter/_second);
auto power = dimensioned(75, _watt);
Run Code Online (Sandbox Code Playgroud)

然后

if (speed < 6) ...
if (power > 17) ...
Run Code Online (Sandbox Code Playgroud)

没有比这更有意义了

if (speed > power) ...
Run Code Online (Sandbox Code Playgroud)

你应该写

if (speed < dimensioned(6, _mile/_hour)) ...
Run Code Online (Sandbox Code Playgroud)

但是,这有意义:

if (speed < 0)
Run Code Online (Sandbox Code Playgroud)

因为0 m/s == 0 mph == 0 AU /两周或你想要使用的任何其他单位(速度).那么问题是如何启用此功能并仅启用此用法.

C++ 11显式运算符和上下文转换bool摆脱了"安全布尔"成语的需要.看来这个问题可以通过类似的"安全零"成语来解决:

struct X
{
  int a;
  friend bool operator<(const X& left, const X& right) { return left.a < right.a; }
private:
  struct safe_zero_idiom;
public:
  friend bool operator<(const …
Run Code Online (Sandbox Code Playgroud)

c++ unit-conversion

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

operator new()和operator new []()之间的区别?

fncs:operator new和operator new [](不是new和new []运算符)之间有什么区别吗?当然除了调用语法?我问,因为我可以使用:: operator new(sizeof(T)*numberOfObject)为我的objs分配X个字节,然后使用数组表示法访问它们,那么:: operator new []有什么大不了的.它只是语法糖吗?

#include <new>
#include <iostream>
#include <malloc.h>

using namespace std;
struct X
{
  int data_;
  X(int v):data_(v){}
};
int _tmain(int argc, _TCHAR* argv[])
{
  unsigned no = 10;
  void* vp = ::operator new(sizeof(X) * no);
  cout << "Mem reserved: " << _msize(vp) << '\n';
  X* xp = static_cast<X*>(vp);
  for (unsigned i = 0; i < no; ++i)
  {
    new (xp + i) X(i);
  }
  for (unsigned i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

c++ memory

9
推荐指数
2
解决办法
1721
查看次数

为什么在逐步使用C#代码时,Visual Studio 2010可以在C++模式下进行漂亮打印?

我遇到了一个奇怪的问题.我的PC上有最新的更新.我的操作系统是Windows 7.任何人都可以帮我解决这个问题吗?我试过重置Visual Studio.

这里有一个确切的问题,以便更容易看到:

关于这个问题的特写

.net c# c++-cli visual-studio-2010 visual-studio

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

iOS VIPER架构,谁必须实例化整个模块?

考虑到VIPER结构

在此输入图像描述

我有两个模块,A和B.第一个模块A,通过演示者,想要执行必须在模块B中完成的动作,因此告诉它的线框执行它.问题是,谁负责实例化整个模块(视图,交互者,演示者......).我看到了一些不同方法的例子:

  • 在应用程序的开头创建所有模块.
  • 在模块的线框中创建整个模块,因此在这种情况下,BWireframe的类方法即时通过所有B模块.

考虑到线框负责路由,它是否还负责创建其模块?

architecture ios

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