c – 类中的ofstream – 尝试引用已删除的函数

>我看到了这个问题:
Attempting to reference a deleted function (VS2013),但它没有给我一个答案.

我在类中有一个成员变量,其类型是ofstream,以及一个包含字符串参数的构造函数:

class dogs
{
public:
    ofstream dogsFile;

    dogs(string location)
    {

    }
};

出现以下错误:

Error 2 error C2280: ‘std::basic_ofstream>::basic_ofstream(const std::basic_ofstream> &)’ : attempting to reference a deleted function c:\users\pc\documents\visual studio 2013\projects\database\database\database.cpp 26 1 Database

我再次尝试了这个代码,但我没有使用字符串,而是使用了char *:

class dogs
{
public:
    ofstream dogsFile;

    dogs(char* location)
    {

    }
};

错误消失了.为什么?为什么字符串会出错?

编辑:
这是整个代码:

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>

using namespace std;


class dogs
{ 
    ofstream dogsFile;

public:
    dogs(string location)
    {

    }
};

int main(int argc, _TCHAR* argv[])
{
    dogs dog = dogs("dog.bin");
    return 1;
}

最佳答案 迪特的原始答案似乎是正确的.

即这将编译:

dogs *dog = new dogs("dog.bin");

你的行不会,看到他关于复制构造函数的答案.

狗(“dog.bin”)将创建一个对象,然后“=”将复制它并将其交给狗.无法复制带有ofstream的对象.

你也可以通过使用来解决这个问题

dogs dog("dog.bin");

代替.

点赞