【发布时间】:2015-12-19 11:52:19
【问题描述】:
我在File.h 中写了一个File 类。我在Directory.h 中编写了目录类,其中包含File& 向量。两个标头具有相同的命名空间。
代码如下:
#include "File.h"
#include <vector>
class Directory : public File
{
public:
...
private:
std::vector<(File&)> files;
};
当我尝试编译它时,它说:
In file included from Directory.cpp:1:0:
Directory.h:29:30: error: template argument 1 is invalid
std::vector<(File&)> files;
^
Directory.h:29:30: error: template argument 2 is invalid
【问题讨论】:
-
您不能拥有
std::vector的引用类型。类型必须是可复制的。有什么理由不使用std::vector<File>? -
那我应该使用指针吗?谢谢。
-
你需要它们吗?多态性?
-
不,它不会工作。最好是有智能指针向量。
-
你错过了 LogicStuff 的观点。虽然存在关系,但智能指针与指针不同。
标签: c++ templates vector reference