小编Pra*_*ian的帖子

非会员运营商超载应该放在哪里?

我想operator<<为我的班级超载.我应该将这个重载的定义添加到std命名空间吗?(因为它ostream operator<<std命名空间的一部分)或者我应该把它留在全局命名空间中?

简而言之:

class MyClass {

};

namespace std {
    ostream& operator<< ( ostream& Ostr, const MyClass& MyType ) {}
}
Run Code Online (Sandbox Code Playgroud)

要么

class MyClass {

};

std::ostream& operator<< ( std::ostream& Ostr, const MyClass& MyType ) {}
Run Code Online (Sandbox Code Playgroud)

哪个更合适,为什么?在此先感谢您的回复.

c++ namespaces operator-overloading

16
推荐指数
3
解决办法
2200
查看次数

在客户端的计算机上调试版本

我们有一个使用Visual Studio 2005构建的本机C++ Win32 .exe,它可以在我们内部测试的所有机器上完美运行(XP 32位,Vista 32位和Windows 7 64位).但当然,它在客户端的32位Vista机器上反复崩溃.

在几个网站上挖掘我发现花絮表明我是否将PDB文件(vc80.pdb和projectName .pdb)以及可执行文件的Release版本发送给客户,有一些方法可以在发生崩溃时生成小型转储.然后,我可以将崩溃转储加载到Visual Studio中,并获取堆栈跟踪和一些其他有用的信息.微软的Dr. Watson实用程序似乎也参与了这个过程.

但我找不到任何关于实现这一目标的步骤的明确指示

  • 什么文件要发货?
  • 如何生成崩溃转储?
  • 以及如何将其加载到VS?

有人可以描述这个过程吗?

c++ debugging visual-studio visual-studio-debugging pdb-files

16
推荐指数
3
解决办法
2439
查看次数

可以提升:algorithm :: join()concat容器的浮点数?

Boost join可用于连接一个字符串容器,可选择用分隔符字符串分隔,如下例所示:boost :: algorithm :: join的一个很好的例子

我的STL技能很弱.我想知道是否有任何方法可以为数字容器(浮点数,双打数,整数)使用相同的函数?看起来应该有一个或两个衬里来适应其他类型.

还有stl的复制功能,这里有一个很好的例子: 如何打印出矢量的内容?

但我不喜欢它如何在每个元素之后添加分隔符字符串.我想使用boost.

c++ string boost stl adapter

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

提升记录器链接问题

我正在编写一个使用Boost库的程序.我没有链接和使用程序选项的问题,但我似乎无法使升压日志正常工作.谁能告诉我我错过了什么?

jamroot.jam

using clang : : : <compileflags>-Isrc/main/headers <compileflags>-std=c++11 <compileflags>-stdlib=libc++ <linkflags>-std=c++11 <linkflags>-stdlib=libc++ ;
lib boost_program_options boost_log ;
exe foghorn : [ glob src/main/cpp/*.cpp ] boost_program_options boost_log ;
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

  "boost::log::v2s_mt_posix::record_view::public_data::destroy(boost::log::v2s_mt_posix::record_view::public_data const*)", referenced from:
      boost::log::v2s_mt_posix::record::reset() in main.o
  "boost::log::v2s_mt_posix::attribute_set::insert(boost::log::v2s_mt_posix::attribute_name, boost::log::v2s_mt_posix::attribute const&)", referenced from:
      boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model>::add_attribute_unlocked(boost::log::v2s_mt_posix::attribute_name const&, boost::log::v2s_mt_posix::attribute const&) in main.o
      boost::log::v2s_mt_posix::aux::attribute_set_reference_proxy::operator=(boost::log::v2s_mt_posix::attribute const&) const in main.o
  "boost::log::v2s_mt_posix::attribute_set::attribute_set(boost::log::v2s_mt_posix::attribute_set const&)", referenced from:
      boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model>::basic_logger(boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model> const&) in main.o
  "boost::log::v2s_mt_posix::attribute_set::attribute_set()", referenced from:
      boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model>::basic_logger() in main.o
  "boost::log::v2s_mt_posix::attribute_set::~attribute_set()", referenced from:
      boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<ESeverityLevel>, boost::log::v2s_mt_posix::sources::single_thread_model>::~basic_logger() in …
Run Code Online (Sandbox Code Playgroud)

c++ logging boost c++11

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

为什么std :: distance不能用于const和nonconst迭代器的混合?

就像问题所说,我想知道原因.因为当我试图获得constconst迭代器之间的距离时出现错误.

vector<int> v;
auto it=v.begin();
auto cit=v.cbegin();
distance(it,cit);


no matching function for call to ‘distance(__gnu_cxx::__normal_iterator<int*, std::vector<int> >&, __gnu_cxx::__normal_iterator<const int*, std::vector<int> >&)
Run Code Online (Sandbox Code Playgroud)

从我对迭代器的有限理解,我认为没有理由不应该工作.

c++ iterator c++11

15
推荐指数
2
解决办法
5342
查看次数

取消引用临时unique_ptr

unique_ptr<A> myFun()
{
    unique_ptr<A> pa(new A());
    return pa;
}

const A& rA = *myFun();
Run Code Online (Sandbox Code Playgroud)

此代码编译但rA包含垃圾.有人可以向我解释为什么这段代码无效?

注意:如果我在解除引用之前将返回指定给myFun命名unique_ptr变量,它可以正常工作.

c++ unique-ptr c++11

15
推荐指数
2
解决办法
1686
查看次数

TiltEffect和LongListSelector

我正在尝试使用TiltEffectSilverlight工具包中的一个LongListSelector.这是在XAML中声明元素的方式:

<controls:PivotItem Header="Pivot Item">

  <controls:PivotItem.Resources>

    <DataTemplate x:Key="LongListSelectorGroupHeaderTemplate">
      <Border Background="{StaticResource PhoneAccentBrush}"
              Margin="10,20,0,0"
              HorizontalAlignment="Left"
              VerticalAlignment="Center"
              Height="{StaticResource PhoneFontSizeExtraExtraLarge}"
              Width="{StaticResource PhoneFontSizeExtraExtraLarge}">
        <TextBlock Text="{Binding Name}"
                   Style="{StaticResource PhoneTextExtraLargeStyle}"
                   Foreground="White"
                   VerticalAlignment="Bottom"
                   HorizontalAlignment="Left" />
      </Border>
    </DataTemplate>

    <DataTemplate x:Key="LongListSelectorGroupItemTemplate">
      <Border Background="{StaticResource PhoneAccentBrush}"
              Margin="10"
              Height="{StaticResource PhoneFontSizeExtraExtraLarge}"
              Width="{StaticResource PhoneFontSizeExtraExtraLarge}">
        <TextBlock Text="{Binding Name}"
                   Style="{StaticResource PhoneTextExtraLargeStyle}"
                   Foreground="White"
                   VerticalAlignment="Bottom"
                   HorizontalAlignment="Left" />
      </Border>
    </DataTemplate>

    <DataTemplate x:Key="LongListSelectorItemTemplate">
      <StackPanel Grid.Column="1"
                  VerticalAlignment="Top"
                  Orientation="Horizontal"
                  toolkit:TiltEffect.IsTiltEnabled="True">

        <toolkit:GestureService.GestureListener>
          <toolkit:GestureListener Tap="OnLongListSelectorTapped" />
        </toolkit:GestureService.GestureListener>

        <Image  Source="{Binding ImageSource}"
                MinHeight="32"
                MinWidth="32"
                MaxHeight="48"
                MaxWidth="48" />

        <TextBlock Text="{Binding Name}"
                   Style="{StaticResource PhoneTextExtraLargeStyle}"
                   Margin="12,10,12,0" /> …
Run Code Online (Sandbox Code Playgroud)

silverlight-toolkit windows-phone-7

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

使用GCC 4.7.0构建Boost 1.49.0时出错

我正在尝试使用GCC 4.7.0(MinGW)构建Boost 1.49.0.我一直收到以下错误信息几十次:

C:\工具\ mingw的\ BIN ../ LIB/GCC/i686的-PC-的mingw32/4.7.0 /../../../../包括/ C++/4.7.0/CMATH:1096:11 :错误:':: hypot'尚未声明

第1096行cmath包含

using ::hypot;
Run Code Online (Sandbox Code Playgroud)

cmath包括math.h声明hypot函数的包含

extern double __cdecl hypot (double, double); /* in libmoldname.a */
Run Code Online (Sandbox Code Playgroud)

在这两个文件中,在上面引用的文件之后的几行是hypotl函数的相同语句(除了类型long double而不是double),并且看起来很开心.

任何想法为什么我收到此错误?

c++ boost mingw

14
推荐指数
2
解决办法
6139
查看次数

如何在C++ 11中编写地图文字?

在Python中,我可以像这样写一个地图文字:

mymap = {"one" : 1, "two" : 2, "three" : 3}
Run Code Online (Sandbox Code Playgroud)

如何在C++ 11中完成等效操作?

c++ map literals c++11

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

"C++编程语言[第4版] - Bjarne Stroustrup"中的绑定错误

我在Bjarne Stroustrup的书中找到了这段代码: 页面截图

这段代码的问题是变量i不会保持在2,它会增加到3.你可以在这里查看:https://wandbox.org/permlink/p5JC1nOA4pIpsgXb

我们不必使用它std::ref()来增加此变量.这是书中的错误还是自C++ 11以来发生过一些变化?

c++ bind c++11

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