gpt4 book ai didi

c++ - 指向访问其 () 运算符的类的指针的 decltype

转载 作者:行者123 更新时间:2023-12-01 14:37:02 25 4
gpt4 key购买 nike

我有以下类(class)

template<class T> class CT
{
T& operator()(int i,int j) const noexcept
{ return indx[i*N+j]; }
private:
T *indx;
int N;

};

现在在我的应用程序中的某些地方我有如下内容

CT<double> arr, (...);
(...)
decltype(arr) *alias;
if(usearr)alias = &arr;
(...)


alias(0,0) = 3.0; // Compiler ERROR!

编译器提示我通过 decltype 访问的对象类型不是函数或函数指针。

如果我删除声明 alias 中的指针并将该行替换为赋值重载,问题就可以解决

decltype(arr) alias;
if(usearr)alias = arr;

前一种方法有什么问题?

最佳答案

decltype(arr)产生 arr 的类型,即CT<double> ,然后decltype(arr) *产生类型 CT<double> * ,这是一个指向 CT<double> 的指针你不能打电话operator()直接在上面。

您可以取消引用它,然后调用 operator()喜欢 (*alias)(0,0) .

关于c++ - 指向访问其 () 运算符的类的指针的 decltype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63752643/

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