error: ‘strcpy_s’ was not declared in this scope; did you mean ‘strcpy’? 35 | strcpy_s(this->na

vector_and_class_not_use_singlen.cpp:35:2: error: ‘strcpy_s’ was not declared in this scope; did you mean ‘strcpy’?
   35 |  strcpy_s(this->name, strlen(name) + 1, name);

      |  ^~~~~~~~
      |  strcpy
vector_and_class_not_use_singlen.cpp: In copy constructor ‘Stu::Stu(const Stu&)’:
vector_and_class_not_use_singlen.cpp:48:2: error: ‘strcpy_s’ was not declared in this scope; did you mean ‘strcpy’?
   48 |  strcpy_s(this->name, strlen(stu.name) + 1,stu.name);
      |  ^~~~~~~~
      |  strcpy
vector_and_class_no

#include 
#include 
//#include 
//#include 
#include 
#include 
 
 
using namespace std;
 
class Stu
{
public:
	Stu();
	Stu(char *name, int age);
	~Stu();
	Stu(const Stu& stu);
	void ShowInfo();
 
private:
	int age;
	char *name;
};
 
Stu::Stu()
{
	age = 0;
	this->name = NULL;
}
 
Stu::Stu(char *name, int age)
{
	cout <name = new char[strlen(name) + 1] ;
	strcpy_s(this->name, strlen(name) + 1, name);
	this->age = age;
}
 
Stu::~Stu()
{
	cout << this->name << "析构函数执行"<name;
}
 
Stu::Stu(const Stu & stu)//自定义拷贝构造函数
{
	this->name = new char[strlen(stu.name) + 1];
	strcpy_s(this->name, strlen(stu.name) + 1,stu.name);
	this->age = stu.age;
	cout << stu.name << "To" << this->name << "拷贝构造执行" << endl;
}
 
void Stu::ShowInfo()
{
	cout << "name:  " << this->name << "     ";
	cout << "age:  " << this->age << endl;
}
 
int main()
{
	Stu s1("First", 21),s2("Second",22),s3("third",23),s4("fouth",24);
	vector   v1;
	v1.push_back(s1);
	v1.push_back(s2);
	v1.push_back(s3);
	v1.push_back(s4);
	for (vector::iterator it = v1.begin(); it != v1.end(); it++)
	{
		it->ShowInfo();
	}
}

 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  #include
  #include

 两个头文件都加了,还是提示没有定义函数

.。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

第一点,C++中没有 strcpy_s;strcpy_s是VC私有的。 如果C++课本用strcpy_s,只能说丢人到姥姥家了
第二点,strcpy_s 的设计很傻很天真。
        有些SB会认为微软不可能SB,那是外行的盲目迷信,微软SB的次数多着呐。强盛的公司并不会比那些弱小的公司犯傻次数少。
        strcpy_s原型为 errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource );
        如果用户知道目的串空间不够,那就不应该使用strcpy,同样也不应该使用strcpy_s。无论用哪个,都和原串不相同了;

我是在linux系统上build 的。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

linux使用strncpy,传递的参数不对,还是build error,后期再分析。

 

 

你可能感兴趣的:(c++)