C++ 试图为c+;中的结构元素获取模板+;
这是我第一次使用模板。我只对结构的一个元素使用模板C++ 试图为c+;中的结构元素获取模板+;,c++,class,templates,struct,C++,Class,Templates,Struct,这是我第一次使用模板。我只对结构的一个元素使用模板 using namespace std; namespace lulz{ template<typename T> struct Contacto { string Cname; string Apellidos; string NumTel; string email; T sexo; Contacto *Proximo; }; ty
using namespace std;
namespace lulz{
template<typename T>
struct Contacto {
string Cname;
string Apellidos;
string NumTel;
string email;
T sexo;
Contacto *Proximo;
};
typedef Contacto* ContactPtr;
class Lista {
public:
Lista();
~Lista();
bool ContactoVacio(ContactPtr Contact1);
void InsertContact(ContactPtr& Contact1, Contacto Temp);
void BuscarContact(ContactPtr Contact1, string Name, string Lastname);
void Display(ContactPtr Contact1);
void Deletes(ContactPtr Contact1);
ContactPtr Cabeza;
};
使用名称空间std;
名称空间lulz{
模板
结构联系人{
字符串Cname;
弦阿佩利多斯;
串珠;
字符串电子邮件;
性取向;
接触器*前置器;
};
类型def Contacto*ContactPtr;
Lista类{
公众:
Lista();
~Lista();
bool ContactoVacio(ContactPtr Contact1);
无效插入触点(触点PTR和触点1,触点温度);
void BuscarContact(ContactPtr Contact1,字符串名称,字符串Lastname);
无效显示(ContactPtr Contact1);
无效删除(ContactPtr Contact1);
ContactPtr Cabeza;
};
我正在模板化结构,但不确定是否应该对类执行同样的操作。我没有在任何函数中将元素作为参数调用,因此我猜不会。我通过typedef访问结构
using namespace std;
using namespace lulz;
int main(){
Lista cabezalista;
Contacto Temp;
ContactPtr Cabeza;
string name, lastname;
int Choice;
ifstream entrada;
Opening(entrada);
Contacto<string> sexo;
while(!entrada.eof())
{
entrada >> Temp;
cabezalista.InsertContact(Cabeza,Temp);
}
使用名称空间std;
使用名称空间lulz;
int main(){
卡贝扎利斯塔;
接触温度;
ContactPtr Cabeza;
字符串名,lastname;
智力选择;
ifstream entrada;
开放(恩特拉达);
性接触;
而(!entrada.eof())
{
恩特拉达>>温度;
卡贝扎利斯塔。InsertContact(卡贝扎,临时);
}
在main.cpp中包含的文件中:1:Proyecto.h:27:错误:应在“*”标记之前使用初始值设定项
项目h:35:错误:“ContactPtr”尚未声明
项目h:37:错误:“ContactPtr”尚未声明
项目h:37:错误:“Contacto”不是一种类型
项目h:40:错误:“ContactPtr”尚未声明
项目h:42:错误:“ContactPtr”尚未声明
项目h:44:错误:“ContactPtr”尚未声明
Proyecto.h:47:错误:“ContactPtr”未命名类型
项目h:52:错误:“Contacto”不是一种类型
Proyecto.h:54:错误:“Temp”之前缺少模板参数 我正在模板化结构,但不确定是否应该对类执行同样的操作 答案是,“很可能是的” 您希望能够使用
typedef Contacto* ContactPtr;
<> >避免使用<代码> Lista<代码>。一个类模板是基于对模板如何工作的不完全理解。上面没有有效的C++代码,正如编译器指出的。
Contact
是类模板,而不是类。因此,您无法为Contact*
创建typedef
。您可以使用:
template <typename T>
using ContactPtr = Contacto<T>*;
或
模板
Lista类
{
...
ContactPtr Cabeza;
};
欢迎来到Stack Overflow。请花点时间阅读并参考您可以在此处询问的内容和方式。
template <typename T>
class Lista
{
...
Contacto<T>* Cabeza;
};
template <typename T>
class Lista
{
...
ContactPtr<T> Cabeza;
};