小编jog*_*pan的帖子

默认赋值运算符可以访问基类的私有成员

这个例子很容易解释我的问题:

http://pastebin.com/VDBE3miY

class Vector3
{
  float                   _x;
  float                   _y;
  float                   _z;

public :
 /// constructors and stuff

};

class Point : public Vector3
{
// some BS
  Point(float _x):Vector3(float _x)
  {}
};

main()
{
   Point aPoint(3);
   Point anotherPoint(4);

   // WHY DOES THIS WORK and copy _x,_y & _z properly
   aPoint = anotherPoint;
}
Run Code Online (Sandbox Code Playgroud)

基本上,我无法理解为什么=派生类可以复制_x,_y并且_z,即使它不应该访问它们,因为它们是私有的.

c++

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

我可以从NSString复制到NSMutableString吗?

我有strValue作为NSString,我想复制strValueS含量"到另一个地方.

这个地方是mstrValue,这是NSMutableString.空间mstrValue已经分配.

我想知道我如何使用memcpystrcpy为此目的.

如果不可能,我想知道其他方法.

iphone copy nsstring ios

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

Visual Studio探查器使用大量RAM

我正在尝试对一个相当大的项目进行一个Instrumentation Profiling(在整个解决方案中大约40,000个源文件,但是在分析中的项目有大约200个源文件),用C++编写.

每次我运行分析时,它会创建一个大约34GB的巨大报告,然后,当它要分析它时,它正在尝试(我认为)将整个文件加载到RAM中.

显然,它使计算机无法使用,我必须在分析仪完成之前停止它.

有什么建议?

c++ profiling visual-studio-2010

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

<functional>中的奇怪模板语法

我一直在寻找的源代码std::function,并std::bind在GCC-4.7.2,和整个使用成员函数指针,我有些不明白的语法来了.

我不明白的是_Maybe_wrap_member_pointer:

template<typename _Tp, typename _Class>
struct _Maybe_wrap_member_pointer<_Tp _Class::*> // note no comma here
Run Code Online (Sandbox Code Playgroud)
  • 为什么_Tp和之间没有逗号_Class::*

  • 由于成员函数void foo::bar()(在下面我示例应用程序),你会_Tp_Class::*决心吗?

下面是我的示例应用程序,它绑定成员函数指针和对象.(我已经提取了与std::bind成员函数的特化/内部相关的源代码)

#include <iostream>
#include <functional>

template<typename T>
struct _Maybe_wrap_member_pointer;

template<typename _Tp, typename _Class>
struct _Maybe_wrap_member_pointer<_Tp _Class::*> // <-- I don't understand this
{                                                // why not <_Tp, _Class::*>  
    typedef std::_Mem_fn<_Tp _Class::*> type;    

    static type __do_wrap(_Tp _Class::* __pm)  
    {
        return type(__pm);
    }
};

template<typename _Func, typename... …
Run Code Online (Sandbox Code Playgroud)

c++ templates stdbind c++11 std-function

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

获取地图的内容作为数组

我有一个std::mapHANDLE对象, std::map<int, HANDLE> MyMap;

我必须使用WaitForMultipleObjects()函数等待这些句柄对象.为此,我必须将地图内容作为HANDLE对象的数组.(如果它是一个向量,那么我们可以使用vector.data()函数).我正在寻找这样一个简单的功能来实现这一目标.

c++ stl std map

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

确定传递给模板函数的变量类型

我正在创建一个小应用程序,需要使用模板功能.几乎应该要求用户输入一些数据类型中的2,然后告诉他们两者中哪一个更大.所以作为模板函数,我想告诉我传递给我的函数的内容.例如,如果该功能需要双打,我希望能够询问用户"输入2个双打".等等.这是函数调用和设置:

int main(){
    getInput(intA, intB);
    getInput(doubleA, doubleB);

    ...
}

template <typename TYPE>
TYPE getInput(TYPE a, TYPE b){
    cout << "Enter 2 " << TYPE << endl;
    cin >> a >> b;
    ...
}
Run Code Online (Sandbox Code Playgroud)

这个应用程序正在进行中,但它只是让我要求用户"输入一些输入"等等.甚至不确定这是否可行,但认为它会很酷.

c++ templates types

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

与total-order相比,partial-order是否足以构建堆?

C++ std :: priority_queue只需要一个部分顺序.但如果它的实现是二进制堆,它是如何工作的?例如:假设我们有一个偏序集( {a, b, c, x}, {c < b, b < a, c < a} ),x具有无关a,b,c.那么最大堆是:

layer 1:    x
layer 2:  b   x
layer 3: x x a c
Run Code Online (Sandbox Code Playgroud)

在弹出操作之后,以教科书中常见的方式,即用root替换root c并将大小减小1.然后我们需要在下面的树根下堆积树:

layer 1:    c
layer 2:  b   x
layer 3: x x a
Run Code Online (Sandbox Code Playgroud)

我们会互换c,b因为c < b,不是吗?什么?从那以后我们仍然没有有效的堆b < a.但b不能"看" a.

c++ algorithm stl std

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

如何使用C++准确获取Windows操作系统版本?

我看到的每个链接总是提到GetVersionEx,但这似乎没有用.

我的方法看起来像这样,

static int windowsVersion() {
       OSVERSIONINFO osvi;

   ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
   osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
   GetVersionEx(&osvi);
   return osvi.dwMajorVersion;
}
Run Code Online (Sandbox Code Playgroud)

我正在运行Windows 8,而它返回6.

如果我正在尝试准确地获取他们的Windows版本,那不是很有帮助.

注意:我还检查了所有其他变量.dwMinorVersion返回4,内部版本号返回类似8400的内容.

c++ windows version

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

取消引用std :: find_if的结果时内存访问不正确

bool hasId(string id, vector<User>& map)
{
    User ans = *(find_if(map.begin(), map.end(), [&](User d)
    {   return (id==(d).uid());}));
    return ans.uid() == id;
}
Run Code Online (Sandbox Code Playgroud)

c++ debugging

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

如何有效地使用std :: threads来减少运行时间

我的代码如下:

int main()
{
  thread t[10];
  for (int i = 0;i < 10; i++)
    t[i] = thread(print,i);//thread creation
  for (int i = 0;i < 10; i++)
    t[i].join();//waiting maiin to threads to cpmleate execution
  cout << "in main";
}

void print(int i) {
  cout<<"i:"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

这是最有效的方式,还是有更有效的方法来减少运行时间?

c++ parallel-processing multithreading c++11

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