- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我在 Ubuntu g++ 版本 4.4.3 中编译的 c++ 问题中遇到了这个问题。我不知道要包含哪些标题来解决这个问题。谢谢
centro_medico.cpp: In constructor ‘Centro_medico::Centro_medico(char*, char*, int, int, float)’:
centro_medico.cpp:5: error: ‘strcpy’ was not declared in this scope
centro_medico.cpp:13: warning: deprecated conversion from string constant to ‘char*’
centro_medico.cpp:13: warning: deprecated conversion from string constant to ‘char*’
centro_medico.cpp: In member function ‘Centro_medico& Centro_medico::operator=(const Centro_medico&)’:
centro_medico.cpp:26: error: ‘strcpy’ was not declared in this scope
centro_medico.cpp:39: warning: deprecated conversion from string constant to ‘char*’
centro_medico.cpp:39: warning: deprecated conversion from string constant to ‘char*’
centro_medico.cpp: In member function ‘bool Centro_medico::quitar_medico(int)’:
centro_medico.cpp:92: warning: deprecated conversion from string constant to ‘char*’
centro_medico.cpp:92: warning: deprecated conversion from string constant to ‘char*’
centro_medico.cpp: In member function ‘void Centro_medico::mostrar_especialidades(std::ostream&) const’:
centro_medico.cpp:123: error: ‘strcmpi’ was not declared in this scope
centro_medico.cpp: In member function ‘void Centro_medico::mostrar_horarios_consulta(char*) const’:
centro_medico.cpp:162: error: ‘strcmpi’ was not declared in this scope
centro_medico.cpp: In member function ‘void Centro_medico::crea_medicos()’:
centro_medico.cpp:321: warning: deprecated conversion from string constant to ‘char*’
centro_medico.cpp:321: warning: deprecated conversion from string constant to ‘char*’
medico.cpp
#include "medico.h"
#include <cstdlib>
#include <iostream>
#include <stdlib>
#include<cstring>
#include<string>
long Medico::total_consultas=0;
Medico::Medico(char *nom,char * espe,int colegiado,int trabajo)
{
int i;
strcpy(nombre,nom);
strcpy(especialidad,espe);
num_colegiado=colegiado;
num_horas_diarias=trabajo;
citas_medico= new Cita*[5]; // 5 Días de las semana, de Lunes a Viernes.
for (i=0;i<5;i++)
citas_medico[i]=new Cita[num_horas_diarias];
}
Medico::Medico(const Medico &m){
int i;
citas_medico=new Cita*[5];
for (i=0;i<5;i++)
citas_medico[i]=NULL;
(*this) = m;
}
Medico &Medico::operator=(const Medico &m){
int i,j;
if (this != &m) { // Para evitar la asignación de un objeto a sí mismo
strcpy(nombre,m.nombre);
strcpy(especialidad,m.especialidad);
num_colegiado=m.num_colegiado;
num_horas_diarias=m.num_horas_diarias;
for (i=0;i<5;i++){
delete citas_medico[i];
citas_medico[i]=new Cita[num_horas_diarias];
for(j=0;j<num_horas_diarias;j++){
citas_medico[i][j] = m.citas_medico[i][j] ;
}
}
}
return *this;
}
medico.h
#pragma once
#include <cstdlib>
#include <iostream>
using namespace std;
#include "cita.h"
class Medico
{
private:
char nombre[50];
char especialidad[50];
int num_colegiado;
int num_horas_diarias;
Cita **citas_medico;
static long total_consultas;
public:
void mostrar_calendario_citas(ostream &o=cout) const;
bool asignar_cita(int d, int hor,Paciente *p=NULL);
void anular_cita(int d, int hor);
bool consultar_cita(char dni[10], int modificar=0);
void modificar_cita(int d, int hor);
void vaciar_calendario_citas();
void borrar_calendario_citas();
char* get_especialidad(char espec[50]) const;
char* get_nombre(char n[50]) const;
int get_num_colegiado() const;
int get_num_horas() const;
void set_num_horas(int horas);
void mostrar_info(ostream &o=cout) const;
static long get_total_consultas();
Cita* operator[](int dia);
void eliminar_calendario_citas();
void crear_calendario_citas();
Medico(char *nom,char * espe,int colegiado,int trabajo);
Medico(const Medico &m);
Medico &operator=(const Medico &c);
void operator delete(void*);
~Medico();
};
ostream& operator<<(ostream &o, Medico &c);
ofstream& operator<<(ofstream &fichero, Medico &m);
ifstream& operator>>(ifstream &fichero, Medico &m);
最佳答案
观察:
#include <cstring>
应该引入 std::strcpy()。using namespace std;
(如 medico.h 中所写)引入了来自 std::
的任何标识符进入全局命名空间。除了using namespace std;
一旦应用程序变大(因为它在全局命名空间中引入了一大堆标识符),就会有点笨拙,你应该永远使用using
在头文件中(见下文!),using namespace
不影响在声明之后引入的标识符。
(using namespace std
写在 header 中,包含在 medico.cpp 中,但 #include <cstring>
出现在 之后。)
我的建议:把 using namespace std;
(如果您坚持使用它)进入 medico.cpp,在任何包含之后,并使用显式 std::
在 medico.h 中。
strcmpi()
根本不是标准功能;在 Windows 上定义时,您必须在 Linux 上以不同的方式解决不区分大小写的比较。
(一般来说,我想指出 this answer 关于 C 和 C++ 中“正确”的字符串处理,它考虑了 Unicode,因为每个应用程序都应该考虑到。总结:标准 不能 正确处理这些事情;做使用 ICU。)
warning: deprecated conversion from string constant to ‘char*’
“字符串常量”是指您在代码中编写字符串文字(例如 "Hello"
)。它的类型是const char[]
,即 constant 字符数组(因为您无法更改字符)。您可以将数组分配给指针,但分配给 char *
,即删除 const
限定符,生成您看到的警告。
OT 说明:using
在头文件中更改包括该头在内的任何人的标识符的可见性,这通常不是头文件的用户想要的。例如,我可以使用 std::string
和一个自写的::string
在我的代码中非常完美,除非我包含你的 medico.h,因为这样两个类就会发生冲突。
不要使用 using
在头文件中。
即使在实现文件中,它也会引入很多歧义。在实现文件中也可以使用显式命名空间。
关于c++ - 错误 : strcpy was not declared in this scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2220795/
我在这里有我的 javascript 代码: define(['controllers/controllers', 'services/alerts'], function(module) {
的意义是什么scope = scope-token *( SP scope-token ) scope-token = 1*( %x21 / %x23-5B / %x5D-7E ) 在 RFC6749
我是 AngularJS 的新手。我试图找出这两个 Controller 定义之间的区别: app.controller('simpleController', ['$scope', function
似乎所有 Guice 的开箱即用 Scope 实现本质上都是基于线程的(或完全忽略线程): Scopes.SINGLETON和 Scopes.NO_SCOPE忽略线程并且是边缘情况:全局范围和无范围。
如果这个问题涉及的是一个常见问题,我很抱歉,但我发现这个问题非常抽象,并且无法真正为其构建一个好的 Google 搜索词。 我试图理解并找到 Maven 中提供的依赖项的用例。我的想法是这样的: 假设
假设我有以下 Controller angular.module('scopeExample', []) .controller('MyController', ['$scope', func
当前在TmThemeEditor上注册的243种配色方案中, 我注意到几乎没有人使用范围选择器运算符。 对于以下情况,运算符非常有用: (text.html | text.xml) & (meta.t
我有一些行为不符合预期的代码......我在 AngularJS Controller 中有一个事件监听器,如下所示: $scope.$on("newClipSelected", function(e
首先,如果帖子太长,我深表歉意。另外,为了以防万一这会以某种方式干扰您可能给我的答案,我不会以通常的方式定义我的 Controller 。相反,我关注http://www.technofattie.c
我有一个模式,其中许多项目类型都是“可编辑的”。这意味着我有很多模板(每种可编辑项目类型一个),这些模板期望具有唯一的字段,但具有通用功能(编辑、保存、取消编辑、删除等)。这些常见功能导致 Contr
$evalAsync 和 $applyAsync 之间有什么区别?我的理解是,当我从指令中使用 $evalAsync 时,表达式将在浏览器呈现之前进行计算。 举个例子,如果我想滚动到页面上的特定位置但
我试图为一个 $scope 变量提供另一个 $scope 变量的值。有人能告诉我出了什么问题吗?查看简单的 plunker 了解详细信息: http://plnkr.co/edit/TlKnd2fM5
我有以下一段 Angular 代码 $scope.prepare = function(){ $scope.elems = [1,2,3]; }; $scope.action = functio
我正在关注 Angularjs 的官方教程,但我陷入了第 2 步。 这是一个片段,我不明白 $scope:scope 的含义, describe('PhoneListCtrl', function()
根据文档, Global: Component is shared among all users. Session: Separate instances of the component are
显示作用域变量,类似于 Angularjs 中的 ng-repeat 元素 这些是我的范围变量 $scope.published = true; $scope.count = 3; 我还有一个名为 l
我是 Angular 的新手,我想在普通的 javascript 中做一些非常简单的事情,但我无法找到如何在 Angular 中正确地做到这一点! 我想设置一个通用函数来清除输入文本字段: 我有这个
在article中发现了这样一个idea : Notice how the value function takes the scope as parameter (without the $ in
注释部分将位于 $scope.$on 下。我需要将 options 返回到我保存 $scope.$emit 的地方。请帮助!!! if (gridConfig.Batch) {
我有一个带有 2 个作用域的 Controller : app.controller('search', function($scope) { $scope.value1 = '';
我是一名优秀的程序员,十分优秀!