吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 684|回复: 5
收起左侧

[求助] C++中类成员模板函数怎么写?

[复制链接]
你不会了解 发表于 2021-11-29 13:52
假设头文件Hello.h
[C++] 纯文本查看 复制代码
class Hello
{
    public: 
        template<class, T>
        T example();
}


假设源文件Hello.c
[C++] 纯文本查看 复制代码
#include "Hello.h"
template<class, T>
T    Hello::example()
{
    return new T();
}


上述代码是我在发帖时手写的伪代码,是有错误的

我的目的是让template<class, T>这一句放在函数的头部,而不是class的头部

因为我就一个成员函数用到了模板,但是这样编辑器不让我编译通过

请问有什么办法,可以将一个类的成员函数用模板,而不关类的什么事,看下面的实际调用例子

[C++] 纯文本查看 复制代码
// 我不想这个调用
Hello<T> hello;
T t = hello.example()

// 我想这样调用
Hello hello;
hello.example<T>();

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

jamesAbc 发表于 2021-11-29 14:17
做不到的,实例化对象的时候没有类型模板也不知道怎么推导
pzx521521 发表于 2021-11-29 14:39
klamauk 发表于 2021-11-29 15:36
class H
{
public:
    int a;
};

class Hello
{
public:
    template<typename T>
    T* example() { return new T(); }
};

Hello hello1;
H* h1=hello1.example<H>();

这样吗?
 楼主| 你不会了解 发表于 2021-11-29 15:40

对,最终我是想实现这样的效果。
假定我有一个Hello类,里面有一万个方法
其中9999个方法都返回int型,只有一个example返回类型由用户<T>来定
但是如果我好像没法单独给example指定模板,必须得给Hello类指定模板
little_boy 发表于 2021-11-30 08:09
1.类的声明:test.h
[C++] 纯文本查看 复制代码
#pragma once
class Hello
{
public:
	template<typename T>
	T example();
};

2.类的实现:test.cpp
[C++] 纯文本查看 复制代码
#include "test.h"
#include <iostream>
using  std::cout;
using  std::endl;
template<typename T>
T Hello::example()
{
	cout << "Hello,World!" << endl;
	return 0;
}

3.测试:源.cpp
[C++] 纯文本查看 复制代码
#include "test.h"
#include "test.cpp"
int main()
{
	Hello h;
	h.example<int>();
}

4.运行结果
ZC$`ECHS{QB4@%IMAAYOH9L.png
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 18:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表