【发布时间】:2016-02-04 09:26:47
【问题描述】:
目前我正在尝试运行我从 lynda.com 收到的一些代码,但它正在吐出一个错误。我要编译的文件如下,只包括对strnlen(strc.cpp)的调用:
#include <cstdio>
#include <cstring>
#include <memory>
#include "strc.h"
...
strc::strc() : data(nullptr) {
msg("default ctor");
}
strc::strc(const char * s) {
size_t slen = strnlen(s, _maxlen);
data = new char[slen + 1];
data[slen] = 0;
memcpy(data, s, slen);
msg("cstring ctor");
}
strc::strc(const strc & f) {
size_t slen = strnlen(f.data, _maxlen);
data = new char[slen + 1];
data[slen] = 0;
memcpy(data, f.data, slen);
msg("copy ctor");
}
...
为了编译这个我正在运行:
g++ -c strc.cpp -o strc.o -std=c++11
我尝试将cstring 替换为string.h,我什至尝试过将std:: 放在strnlen 前面。非常感谢您对此事的任何帮助
【问题讨论】:
-
能否请您提供我们的错误信息?是不是说
strnlen没有在这个范围内声明? -
复制构造函数可以使用
strlen和strcpy,因为f在f的构造过程中已经被限制在_maxlen之下