C++ generic classes
C++ generic classes
我有一个关于c++中泛型类的(简单)问题。我对在类似C#的列表中使用它们有一些了解,但现在我试图在C++中实现一个,但我遇到了一个错误,我不知道该怎么做才能让程序正常工作。这不是家庭作业或我需要做的事情,而是我自己的研究。
代码:
#include <iostream>
using namespace std;
template<class A>class genericClass
{
A ceva;
char* clasa;
public:
void afisClasa(void);
genericClass(A);
~genericClass(void);
};
template<class A>genericClass<A>::afisClasa()
{
cout << clasa;
}
template<class A>genericClass<A>::genericClass(A myType)
{
myType = ceva;
if((int)ceva == ceva)
{
clasa = "INT";
goto label;
}
if((float)ceva == ceva)
{
clasa = "FLOAT";
goto label;
}
if((double)ceva == ceva)
{
clasa = "DOUBLE";
goto label;
}
label:
//cout << clasa;
}
template<class A>genericClass<A>::~genericClass(void)
{
}
int main()
{
int n;
genericClass<float> A(6.2);
cin >> n;
}
这个程序应该取一个泛型数字并说明它是什么类型,但当我实现afisClass方法时,我得到了一个错误:
C4430: Missing type specifier - int assumed. Note c++ does not support default-in
你必须说:
template <class A> void genericClass<A>::afisClasa() { cout << clasa; }
// ^^^^
函数定义必须具有与上一个声明完全相同的形式。
在这种情况下,您可能想要进行模板专门化。C++允许您根据模板的实例化类型自定义模板的行为。例如
template <typename T>
void PrintMyType(T& arg) {
cout << "Unknown type" << endl;
}
template <>
void PrintMyType<int>(int& arg) {
cout << "int" << endl;
}
template <>
void PrintMyType<float>(float& arg) {
cout << "float" << endl;
}
PrintMyType(42); // prints "int"
PrintMyType("hello"); // prints "Unknown type"
相关文章:
- 是否可以在C++中有一个"generic"模板参数,该参数可以是非类型模板参数或类型?
- Threads with Classes and std::packaged_task
- 操作系统 (Linux) 在使用 boost::asio::generic::raw_protocol::socket
- 在 C++ 中创建"generic"结构
- C++ Classes/Confusion
- 在使用Qt Designer Form Classes扩展我自己的自定义小部件时防止重复的自动连接
- Classes composition
- C++ - 创建游戏实体时,我应该使用"sub classes"还是结构?
- C++中"classes"(非对象)的哈希表
- inheritance Classes
- C++11 empty flag classes
- FreeType "generic" 与 c++/cx 关键字冲突
- Derived Classes C++
- 确定"generic function"的返回类型
- C++ "Virtual functions handling on multiple base classes"
- Singleton Service classes in c++
- Static classes C ++
- Splitting up classes c++
- 使用命名空间std和Template Classes
- C++ generic classes