"Expression must be a pointer to a complete object type"
"Expression must be a pointer to a complete object type"
我已经尝试浏览了许多其他主题,但似乎没有一个能解决我的特定问题。
我有一个3X3矩阵类,并有以下代码允许用户访问矩阵的行:
V3& M33::operator[](int i)
{
return rows[i]; // rows is a Vector3 array
}
然而,在我的向量类中,当我尝试这样做时:
void rotateAboutArbitraryAxis(int axis, float degrees)
{
if(axis == 0)
{
M33 m();
V3 row0(1.0f, 0.0f, 0.0f);
V3 row1(0.0f, cos(degrees), -sin(degrees));
V3 row2(0.0f, sin(degrees), cos(degrees));
m[0] = row0; //error
m[1] = row1; //error
m[2] = row2; //error
}
}
在上面三个标记的地方有一个错误标记。
intellisense命令告诉我"表达式必须是指向完整对象类型的指针"而实际的构建错误是"下标需要数组或指针类型。"
有人知道为什么会这样吗?如果需要,我可以提供更多信息。
谢谢!
行
M33 m();
声明m
是一个不带参数并返回M33
的函数。这是大多数归属解析的关键。
由于编译器认为m
是一个函数,当您在以下行中使用它时,它会抱怨:
m[0] = row0; //error
m[1] = row1; //error
m[2] = row2; //error
正如P0W所评论的,如果您将第一行更改为:
M33 m;
只要M33
定义了operator[]
函数,一切都应该正常。
相关文章:
- 当覆盖存在时调用基本虚拟"binded to object"函数
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- C++将派生类转换为基类时'object slicing'期间发生的情况
- 如何理解 C++17 标准参考中的 [intro.object]/3? N4659 的
- "Cannot convert Python object argument to type '<typename>'" - 使用 Cython 包装 C++ 类时出错
- 使用 object 中的方法调用带有 std::bind 和 std::function.target 的 C 样式函数
- "Called Object Type is Not a Function or Pointer" 与 typedef 和类
- C++线程"Call to non-static member function without an object argument"
- dopen():不以 root 身份运行时"failed to map segment from shared object"
- 该书第252页的错别字" a complete guide to c++"?
- 当两个成员位于同一类中时出错"a nonstatic member reference must be relative to a specific object"
- Nan::ObjectWrap to Napi::Object Wrap 无法访问 JavaScript 中的属性
- 现代C++会支持 C# "Object Initalizer"语法吗?
- 指向对象生存期之外的已分配内存的指针是"invalid pointer[s]"还是"pointer[s] to an object"?
- C++ Equivalent of Java Map<String, Object>
- WebKit2GTK+ "window-object-cleared"未清除
- 返回 *&object 时是否允许复制/移动省略?
- QPointer::clear() 是删除其引用的指针,还是"Clears this QPointer object."其他含义?
- 为什么在返回子对象时"that is the complete object of a subobject"延长对象的生存期?
- "Expression must be a pointer to a complete object type"