c++中,表达式不能是函数
C++, expression can not be a function
Expression can not be a function
,但我的表达式不是一个函数,它是一个变量。
显示我的代码。
class Data {
public:
Data(int rows, int partid, vector<MatrixXd*> * res, MatrixXd * a)
{
_rows = rows;
_partid = partid;
_res = res;
_a = a;
}
int _rows;
int _partid;
vector<MatrixXd*> * _res;
MatrixXd * _a;
};
[snippet]
void * partitionFunc(void * arg)
{
Data * data = (Data *)arg;
MatrixXd * m;
int dim = data->_rows / data->_res->size();
for (int i = 0; i < dim; i ++)
{
for (int j = 0; j < dim; j ++)
{
m = (*(data->_res))[data->_partid];
(*m)(i, j) = data->_a(dim*data->_partid+i, dim*data->_partid+j);
}
}
pthread_exit(NULL);
}
编译代码时返回
In file included from main.cpp:2:0:
solutions.h: In function ‘void* partitionFunc(void*)’:
solutions.h:86:75: error: expression cannot be used as a function
(*m)(i, j) = data->_a(dim*data->_partid+i, dim*data->_partid+j);
^
solutions.h: In function ‘void* partitionFunc(void*)’:
solutions.h:86:75: error: expression cannot be used as a function
(*m)(i, j) = data->_a(dim*data->_partid+i, dim*data->_partid+j);
但是m
是一个矩阵,(*m)(i, j)
要得到第i行+1,第j列+1的值
表示data->_a
不起作用(注意^
的位置)。你应该做同样的事情data->_a
作为m
,即使用operator*
,因为它是指向MatrixXd
的指针。
(*m)(i, j) = (*data->_a)(dim*data->_partid+i, dim*data->_partid+j);
我甚至没有看到您为矩阵添加访问器的方式。另外,使用括号是函数调用,除非重载()操作符。
没有办法访问数据。
相关文章:
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 为什么虚函数不能是静态的和全局的?
- 为什么继承的受保护构造函数不能公开?
- C++为什么类成员函数不能重新声明,但普通函数可以
- 为什么在C++中使用关系运算符创建的模板函数不能对字符串正常工作?
- 成员函数不能为集合迭代器和const_iterator的输入重载(但可以为其他 STL 迭代器重载)
- 为什么模板函数不能作为模板模板参数传递?
- 为什么 free 函数不能在 C 数组上运行,而 std::begin 在某些情况下可以在 C++14 中运行?
- 构造函数不能用于启发性化
- C 错误 - 函数不能超载
- 有没有办法使成员函数不能从构造函数调用
- 为什么模板函数不能是模板类的友元模板函数
- "Framework::Graphics::Material"的默认构造函数不能被引用 - 它是一个已删除的函数
- lower_bound()函数不能在调试模式下编译
- 为什么函数不能正确强制转换指针(从基类到派生类)
- 显式默认函数不能声明为 constexpr,因为隐式声明不是 constexpr
- 琐碎的默认构造函数不能是 constexpr?
- 函数不能嵌套,那么如何在C++中执行此操作
- 错误:成员函数不能在其类之外声明
- 错误-仅返回类型不同的函数不能重载.c++