不熟悉c++指针,需要帮助
not familiar with c++ pointer, need help
在*binSon[0].add(x);
行,它给了我一个错误,表达式必须有一个类类型,我该怎么办?
struct Rectangle
{
tName Name; //name of the rectangle
struct Rectangle *binSon[NDIR_1D]; //left and right son
int Center[NDIR_1D];
int Length[NDIR_1D];
void add(Rectangle x){
if(strcmp(x.Name,Name)<0)
{
if(binSon[0]==NULL)
binSon[0]=&x;
else
*binSon[0].add(x);
}else{
if(binSon[1]==NULL)
binSon[1]=&x;
else
*binSon[1].add(x);
}
}
};
您有一个小的优先级问题。以下任意一个都可以解决这个问题:
(*binSon[0]).add(x);
或
binSon[0]->add(x);
另一行也一样
你的问题并不完全像你想的那样,尽管它可以这样解决。
正确的语法是:
binSon[0]->add(x);
->
操作符是指针成员,它为您处理所有事情。通常,->
应该与指针一起使用,.
应该与引用或对象本身一起使用(例外情况在有趣的地方)。
要按你想要的方式做(你真的不应该这样做),(*binSon[0]).add(x)
应该工作。操作符的优先级可能是您目前的问题。
也许你想要(*binSon[0]).add
或更好的binSon[0]->add
。
在c++中,.
具有比*
更高的优先级,因此当您编写*binSon[1].add(x)
时,它意味着*(binSon[1].add(x))
,这不是您想要的。您可以编写(*binSon[1]).add(x)
,或者更好的binSon[1]->add(x)
,这是语法糖。
相关文章:
- 需要帮助设置在C++中使用的Potrace
- 在指针的帮助下,文本文件中单词的频率
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 如何在Qbutton的帮助下更改Q对话框的宽度
- 需要帮助将结构数组传递给函数
- C++需要帮助从用户那里获得一个整数,并确保它在另外两个整数之间
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 有人可以帮助我处理正则表达式吗?
- C++调用具有 *this 属性的单个帮助程序函数
- C++:需要帮助了解运算符重载错误
- 需要以下代码的帮助,下面的代码有什么问题
- CS1 项目帮助C++
- 用于检查值是否为其任何参数的帮助程序函数
- 需要有关此 if 语句的帮助
- 类型限定宏帮助程序
- CoreCLR 中的检测探查器 - 将帮助程序程序集加载到 dotnet 进程的方法
- NS3 插槽混淆(需要帮助理解)
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- 需要帮助查找内存泄漏
- 有人可以帮助我理解这些参数/参数吗?