C++中类成员模板函数怎么写?
假设头文件Hello.hclass Hello
{
public:
template<class, T>
T example();
}
假设源文件Hello.c
#include "Hello.h"
template<class, T>
T Hello::example()
{
return new T();
}
上述代码是我在发帖时手写的伪代码,是有错误的
我的目的是让template<class, T>这一句放在函数的头部,而不是class的头部
因为我就一个成员函数用到了模板,但是这样编辑器不让我编译通过
请问有什么办法,可以将一个类的成员函数用模板,而不关类的什么事,看下面的实际调用例子
// 我不想这个调用
Hello<T> hello;
T t = hello.example()
// 我想这样调用
Hello hello;
hello.example<T>();
做不到的,实例化对象的时候没有类型模板也不知道怎么推导 不应该 用模板函数
应该用接口 class H
{
public:
int a;
};
class Hello
{
public:
template<typename T>
T* example() { return new T(); }
};
Hello hello1;
H* h1=hello1.example<H>();
这样吗? klamauk 发表于 2021-11-29 15:36
class H
{
public:
对,最终我是想实现这样的效果。
假定我有一个Hello类,里面有一万个方法
其中9999个方法都返回int型,只有一个example返回类型由用户<T>来定
但是如果我好像没法单独给example指定模板,必须得给Hello类指定模板 1.类的声明:test.h
#pragma once
class Hello
{
public:
template<typename T>
T example();
};
2.类的实现:test.cpp
#include "test.h"
#include <iostream>
usingstd::cout;
usingstd::endl;
template<typename T>
T Hello::example()
{
cout << "Hello,World!" << endl;
return 0;
}
3.测试:源.cpp
#include "test.h"
#include "test.cpp"
int main()
{
Hello h;
h.example<int>();
}
4.运行结果
页:
[1]