小编use*_*712的帖子

strcpy()导致从'const char*'到'char*'的无效转换[-fpermissive]

我正在尝试让一个名为PReader(带有一个名为Execute(),不带参数的函数)的对象具有通过构造函数传入的文件名,因此Execute()可以访问它.我试图设置它的方法包括让构造函数为字符串分配内存,然后将其复制,并为其设置析构函数.我知道这很尴尬,但我知道这个设置将使我未来的项目添加更容易.

以下是我的对象当前的设置方式:

#include <PReader.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

PReader::PReader(const char *f)
{
    filename = new char[strlen(f)+1];
    strcpy(filename, f);
}

PReader::~PReader()
{
    delete [] filename;
}

void PReader::Execute(void)
{
    FILE *f = fopen(this->filename, "rb");
    ...
}
Run Code Online (Sandbox Code Playgroud)

这给了我错误:

PReader.C: In constructor ‘PReader::PReader(char*)’:
PReader.C:10:20: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
  strcpy(filename, f);
                    ^
In file included from /usr/include/stdlib.h:11:0,
                 from PReader.C:2:
/usr/include/string.h:30:8: error:   initializing argument 1 of ‘char* strcpy(char*, const char*)’ [-fpermissive]
 char …
Run Code Online (Sandbox Code Playgroud)

c++ constructor destructor const strcpy

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

标签 统计

c++ ×1

const ×1

constructor ×1

destructor ×1

strcpy ×1