小编gsh*_*hep的帖子

extern模板类std ::可移动对象的容器

我想使用新的C++ 11特性'extern模板类'与可移动对象的STL容器(不可复制)并获得编译器错误.

例: MyFile.hpp

#pragma once

#include <cstdio>

class MyFile
{
    std::FILE * handle;

public:
    MyFile(const char * filename);

    ~MyFile();

    MyFile(MyFile && that);

    MyFile & operator=(MyFile && that);

    MyFile(const MyFile&) = delete;
    void operator=(const MyFile&) = delete;

    std::FILE const * getFile() const;
};
Run Code Online (Sandbox Code Playgroud)

MyFile.cpp:

#include "MyFile.hpp"

#include <iostream>

MyFile::MyFile(const char * filename)
    : handle{nullptr}
{
    if (!(handle = fopen(filename, "r")))
        throw std::runtime_error("blah blah blah");
}

MyFile::~MyFile()
{
    std::cout << "File::~File()" << std::endl;
    if (handle)
        fclose(handle);
}

MyFile::MyFile(MyFile && that) …
Run Code Online (Sandbox Code Playgroud)

c++ templates stl c++11 visual-studio-2013

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

标签 统计

c++ ×1

c++11 ×1

stl ×1

templates ×1

visual-studio-2013 ×1