>我看到了这个问题:
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");
代替.