C++ 无法编译(未声明&应为主表达式)
因此,bellow遵循一个函数,然后将为主程序调用该函数。我的问题是,如果我不将challInfo声明为struct,编译时,它将返回: 第5行第21列第PhotoPoints页出错:“challInfo”未在此范围内声明 同时,如果我按照下面的方式声明它,它将返回: 第5行第30列页面光点错误:在“.”之前应为主要表达式。第7行页面光点标记错误,第52列:在“.”之前应为主要表达式。第8行页面光点标记错误,第28列:在“.”之前应为主要表达式。第8行页面光点标记错误,第60列:在“.”之前应为主要表达式。第8行的页面光点上的标记错误,第109列:在“.”之前应为主要表达式。第9行的页面光点上的标记错误,第31列:在“.”之前应为主要表达式。第9行的页面光点上的标记错误,第66列:应在“.”之前使用主表达式。第9行的页面光点上的标记错误,第118列:应在“.”之前使用主表达式。第14行的页面光点上的标记错误,第35列:应在“.”之前使用主表达式。第14行的页面光点上的标记错误,第57列:应在“.”之前使用主表达式。标记 我一直在互联网上寻找,包括堆栈溢出,似乎每个案例的答案都是特定的。我承认我迷路了。你能帮忙吗C++ 无法编译(未声明&应为主表达式),c++,mysql,regex,struct,C++,Mysql,Regex,Struct,因此,bellow遵循一个函数,然后将为主程序调用该函数。我的问题是,如果我不将challInfo声明为struct,编译时,它将返回: 第5行第21列第PhotoPoints页出错:“challInfo”未在此范围内声明 同时,如果我按照下面的方式声明它,它将返回: 第5行第30列页面光点错误:在“.”之前应为主要表达式。第7行页面光点标记错误,第52列:在“.”之前应为主要表达式。第8行页面光点标记错误,第28列:在“.”之前应为主要表达式。第8行页面光点标记错误,第60列:在“.”之前应为
float PhotoPoints() {
struct challInfo;
bool isFacingOther();
bool sphereInDark();
bool isCameraOn = challInfo.camera.cameraOn;
bool isFacingOtherResult = isFacingOther();
bool isOppNotInDarkZone = !sphereInDark(challInfo.other.zrState);
bool myMirror = challInfo.me.mirrorTime != 0 && challInfo.me.mirrorTime + ITEM_MIRROR_DURATION > challInfo.currentTime;
bool otherMirror = challInfo.other.mirrorTime != 0 && challInfo.other.mirrorTime + ITEM_MIRROR_DURATION > challInfo.currentTime;
float picturePointValue = 0;
if (isCameraOn && isFacingOtherResult && isOppNotInDarkZone && !myMirror)
{
float bet[3], distance;
mathVecSubtract(bet, challInfo.me.zrState, challInfo.other.zrState, 3);
distance = mathVecMagnitude(bet, 3);
if (distance < PHOTO_MIN_DISTANCE) {
DEBUG(("Not a good shot: too close to the other satellite | "));
return 0.0;
}
picturePointValue = 2.0 + 0.1/(distance - PHOTO_MIN_DISTANCE + 0.1);
if(otherMirror){
picturePointValue = 0;
DEBUG(("Not a good shot: Opposing mirror active |"));
}
}
else if(!isCameraOn){
DEBUG(("Not a good shot: camera off |"));
}
else if(myMirror){
DEBUG(("Not a good shot: my mirror's in the way |"));
}
else if(!isFacingOtherResult) {
DEBUG(("Not a good shot: not facing the other satellite | "));
}
else if(!isOppNotInDarkZone){
DEBUG(("Not a good shot: opponent in dark zone |"));
}
return picturePointValue;
}
每次引用challInfo的成员时,此处都有一个错误。您需要包含一个完整的声明,这样编译器就可以知道结构内部是什么,只需知道它是一个结构。您只提供了一份远期声明
struct challInfo;
应具有如下定义:
// Define your camera object
struct Camera {
bool isCameraOn;
}
// Define the object type of challInfo
struct PhotographyInfo {
Camera camera
}
然后可以使用对象:
PhotographyInfo challInfo{};
challInfo.camera = Camera{true};
定义一个结构challInfo,然后将bool isCameraOn分配给该结构的数据成员。这里是一个问题,我认为您对结构有点困惑。结构在许多方面与类相似。例如,我可以将这样的内容与其他类定义一起放在头文件中
struct Example_struct{
int data_mem_a;
bool data_mem_b;
}
然后可能在类原型中使用此结构
class example_class{
private:
example_struct struct_instance;
public:
bool get_a_from_struct(){return struct_instance.data_mem_a;};
在您的例子中,您需要确保challInfo结构在某处定义,然后声明它的一个实例
challInfo CI;
bool isCameraOn = CI.camera.caneraOn;
结构challInfo似乎缺少类型名。或者,如果challInfo是一个结构类型,它同时缺少一个变量名和结构的定义。恐怕我不明白,你会怎么更正它?其他人不可能猜到如何更正它,但是我怀疑这个函数应该有一个名为challInfo的参数,不管它应该是什么类型。你接受答案了吗@NUNOVIEGASPLE删除“mysql”标签;这似乎是无关的。