如果我被允许做以下事情:
template <typename T = int>
class Foo{
};
Run Code Online (Sandbox Code Playgroud)
为什么我不允许在主要方面做以下事情?
Foo me;
Run Code Online (Sandbox Code Playgroud)
但我必须指明以下内容:
Foo<int> me;
Run Code Online (Sandbox Code Playgroud)
C++ 11引入了默认模板参数,现在它们对我完全理解是难以理解的.
在我的文件系统中搜索文件时,我的程序抛出了空指针异常,因为File.list()无法访问我的文件系统上的"Documents And Settings"并尝试解析String [] myArray = File.list() myArray为null抛出了异常.
如何检查文件或文件夹是否无法使用文件访问并保持不发生?
有人建议实施吗?前几天我在家里试过这个,发现移动语义太难建立先前的链接或简单的链表.使用std :: unique_ptr创建树很容易.当然,由于复制/分配,std :: shared_ptr可以轻松实现这个问题.那怎么样?
我有点困惑.有两种方法可以从方法返回数组.第一个建议如下:
typedef int arrT[10];
arrT *func(int i);
Run Code Online (Sandbox Code Playgroud)
但是,如何捕获返回的int(*)[]?
另一种方法是通过引用或指针:
int (*func(int i)[10];
Run Code Online (Sandbox Code Playgroud)
要么
int (&func(int i)[10];
Run Code Online (Sandbox Code Playgroud)
返回类型是int(*)[]或int(&)[].
我遇到的麻烦是如何分配一个变量来接受这个点,我继续得到如下错误:
can't convert int* to int (*)[]
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么或者我的知识缺乏什么?
我经常遇到这个问题,我相信移动构造函数是有序的,但我认为复制构造函数是问题,隐藏它似乎不起作用.
代码:
template <class T>
class LinkedList{
public:
//
LinkedList() {}
LinkedList(const T &data);
LinkedList(const T &data, const LinkedList &node);
LinkedList(const LinkedList &object);
LinkedList &operator=(const LinkedList &object);
~LinkedList() {}
std::shared_ptr<LinkedList> push_back(const T& data);
private:
T data;
std::unique_ptr<LinkedList> link;
std::unique_ptr<LinkedList> LinkFactory(const LinkedList &node);
std::shared_ptr<LinkedList> CreateStartNode(const T &data);
std::shared_ptr<LinkedList> CreateNode(const T &data, const LinkedList &node);
};
Run Code Online (Sandbox Code Playgroud)
发生错误的特定行是:
LinkedList<T>::LinkedList(const LinkedList<T> &object) : data(object.data),
link(std::move(object.link)) {}
Run Code Online (Sandbox Code Playgroud)
我试图移动而不是复制复制构造函数中的链接无济于事.如果设计移动构造函数而不是合成,那会更好吗?
我浏览了http://en.cppreference.com/w/cpp/error/exception和http://en.cppreference.com/w/cpp/io/basic_fstream,寻找可能引发的I/O异常.我知道我可以创建一个自定义异常类,并且有很多网站提供示例代码,但我想要一些专门针对最佳实践的指导.
还有,我应该集中精力使用图书馆让我的生活更轻松吗?