小编use*_*352的帖子

为什么我不能将unique_ptr push_back到向量中?

这个程序有什么问题?

#include <memory>
#include <vector>

int main()
{
    std::vector<std::unique_ptr<int>> vec;

    int x(1);
    std::unique_ptr<int> ptr2x(&x);
    vec.push_back(ptr2x); //This tiny command has a vicious error.

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误:

In file included from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/mingw32/bits/c++allocator.h:34:0,
                 from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/allocator.h:48,
                 from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/memory:64,
                 from main.cpp:6:
c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/unique_ptr.h: In member function 'void __gnu_cxx::new_allocator<_Tp>::construct(_Tp*, const _Tp&) [with _Tp = std::unique_ptr<int>, _Tp* = std::unique_ptr<int>*]':
c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/stl_vector.h:745:6:   instantiated from 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = std::unique_ptr<int>, _Alloc = std::allocator<std::unique_ptr<int> >, value_type = std::unique_ptr<int>]'
main.cpp:16:21:   instantiated from here
c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/unique_ptr.h:207:7: error: deleted function 'std::unique_ptr<_Tp, _Tp_Deleter>::unique_ptr(const …
Run Code Online (Sandbox Code Playgroud)

c++ stl smart-pointers unique-ptr c++11

192
推荐指数
2
解决办法
13万
查看次数

具有依赖范围的嵌套模板

什么是依赖范围以及在以下错误的上下文中typename的含义是什么?

$ make
g++ -std=gnu++0x main.cpp
main.cpp:18:10: error: need 'typename' before 'ptrModel<std::vector<Data> >::Type' because 'ptrModel<std::vector<Data> >' is a dependent scope
make: *** [all] Error 1


/*
 * main.cpp
 */

#include <vector>
#include <memory>

template<typename T>
struct ptrModel
{
 typedef std::unique_ptr<T> Type;
};


template<typename Data>
struct ptrType
{
 typedef ptrModel< std::vector<Data> >::Type Type;
};

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

c++ templates scope nested

79
推荐指数
1
解决办法
4万
查看次数

const int = int const?

例如,是

int const x = 3;
Run Code Online (Sandbox Code Playgroud)

有效代码?

如果是这样,它是否意味着相同

const int x = 3;
Run Code Online (Sandbox Code Playgroud)

c++

59
推荐指数
4
解决办法
7万
查看次数

std :: vector是否将其值类型的赋值运算符用于push_back元素?

如果是这样,为什么?为什么不使用值类型的复制构造函数?

我收到以下错误:

/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/vector.tcc: In member functio
n `ClassWithoutAss& ClassWithoutAss::operator=(const ClassWithoutAss&)':
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/vector.tcc:238:   instantiate
d from `void std::vector<_Tp, _Alloc>::_M_insert_aux(__gnu_cxx::__normal_iterato
r<typename _Alloc::pointer, std::vector<_Tp, _Alloc> >, const _Tp&) [with _Tp =
ClassWithoutAss, _Alloc = std::allocator<ClassWithoutAss>]'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_vector.h:564:   instantia
ted from `void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = Class
WithoutAss, _Alloc = std::allocator<ClassWithoutAss>]'
main.cpp:13:   instantiated from here
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/vector.tcc:238: error: non-st
atic const member `const int ClassWithoutAss::mem', can't use default assignment
 operator
Run Code Online (Sandbox Code Playgroud)

在以下代码上运行g ++ main.cpp:

/*
 * ClassWithoutAss.h
 *
 */

#ifndef CLASSWITHOUTASS_H_
#define CLASSWITHOUTASS_H_

class ClassWithoutAss
{ …
Run Code Online (Sandbox Code Playgroud)

c++ g++ std stdvector dynamic-arrays

11
推荐指数
2
解决办法
6932
查看次数

相互递归的类

如何在C++中实现相互递归的类?就像是:

/*
 * Recursion.h
 *
 */

#ifndef RECURSION_H_
#define RECURSION_H_

class Class1
{
  Class2* Class2_ptr;
public:
  void Class1_method()
  {
      //...
      (*Class2_ptr).Class2_method();
      //...
  }
};

class Class2
{
    Class1* Class1_ptr;
public:
    void Class2_method()
    {
        //...
        (*Class1_ptr).Class1_method();
        //...
    };
};


#endif /* RECURSION_H_ */
Run Code Online (Sandbox Code Playgroud)

c++ recursion scope class mutual-recursion

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

数组类型的语法是什么?

类型 []吗?例如,我可以吗?

T<int[]>;
Run Code Online (Sandbox Code Playgroud)

对于一些模板T.

c++ arrays

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


std :: move会导致切片吗?

例如,在

unique_ptr<Derived> = new deriv;
std::vector<unique_ptr<Base>>.push_back(std::move(deriv));
Run Code Online (Sandbox Code Playgroud)

将派生切片打字unique_ptr<Base>

c++ dynamic std move-semantics object-slicing

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

如何在子类中访问超类中的私有成员变量?

我想做的事情如下:

/*
 * Superclass.h
 *
 */

class Superclass
{
const int size;

public:
    Superclass():size(1){}
    ~Superclass(){}
};


/*
 * Subclass.h
 *
 */

#include "Superclass.h"

class Subclass : public Superclass
{

public:
    Subclass(){size;}
    ~Subclass(){}
};
Run Code Online (Sandbox Code Playgroud)

c++

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

const成员未显式初始化但编译

我听说const成员必须明确初始化,但以下编译对我来说:

class someClass
{
    int const x;
};

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

c++ constructor initialization const g++

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