gpt4 book ai didi

c++ - char[] 类型成员指针的模板签名

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:41 26 4
gpt4 key购买 nike

我编写了一个比较器来检查对象的成员是否等于输入。这就像一个魅力,除了一个成员是一个 char[];

我在网上搜索了 C++ ISO 标准并尝试了很多,但我无法弄明白。

这是简化的代码:

/*
* main.cpp
*
* Created on: Nov 17, 2012
* Author: martijn
*/

#include <string.h>

class Data {
public:
Data() {
strcpy(Name, "MyCharArray");
};
virtual ~Data();

char Name[12];
};

template <class ClassT, char (ClassT::*Name)[]> // What should be here?!
class Comparator {
public:
Comparator() {};
~Comparator() {};
};

int main() {

Comparator<Data, &Data::Name> comparatorArray;

return 0;
}

代码中指出了问题区域(至少我是这么认为的)。当前代码不正确。编译器说:

错误:无法将模板参数“&Data::Name”转换为“char (Data::*)[]”

最佳答案

需要在模板参数类型中指定绑定(bind)的数组:

template <class ClassT, char (ClassT::*Name)[12]>

或者可能:

template <class ClassT, std::size_t N, char (ClassT::*Name)[N]>

并使用:

// Note, this is a declaration of a function, is this correct?
Comparator<Data, 12, &Data::Name> comparatorArray();

关于c++ - char[] 类型成员指针的模板签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13580372/

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