gpt4 book ai didi

c++ - 如何制作一个 C++ 模板类,根据模板值的类更改其成员和访问器?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:27:24 24 4
gpt4 key购买 nike

我有一个将被实例化数百万次的类。这是一个 C++ 模板。该类跟踪每个值的计数,值的类型为 T(其中 T 是模板参数)。

我有一个特殊情况,其中计数被跟踪的值。在这种情况下,我想放弃模板化实例变量,而只使用计数。

例如,这是一个程序:

#include <stdio.h>
#include <iostream>
#include <stdint.h>

template <typename T>
class A {
private:
T var_;
uint64_t count_;
public:
A(T v):var_(v),count(0){ }
uint64_t count() const { return count_;}
T var() const { return var_;}
void inc_count();
};

template <typename T> void A<T>::inc_count() {
count_++;
};

template <typename T> std::ostream & operator <<(std::ostream &os, const A<T> &e) {
os << e.count() << "=" << e.var();
return os;
};


int main(int argc,char **argv)
{
A<int> a(3);

a.inc_count();
std::cout << a << "\n";

a.inc_count();
std::cout << a << "\n";
}

我希望能够实例化为:

A<uint64_t> deg(1);

在这种情况下,我希望将 count_ 变量设置为 1 并让方法 var() 返回 计数()

有什么办法吗?

(这是一个人为的例子,但这是我遇到的问题的本质。)

最佳答案

只需使用显式特化:

template<> class A<uint64_t> { /* whatever you like goes here */ };

关于c++ - 如何制作一个 C++ 模板类,根据模板值的类更改其成员和访问器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14388854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com