C++ 这个结构声明有什么问题?
我用新的“game_struct”声明了一个结构。它包括以下内容:C++ 这个结构声明有什么问题?,c++,struct,this,C++,Struct,This,我用新的“game_struct”声明了一个结构。它包括以下内容: struct game_struct{ scene scene_container[10]; player cPlayer;; scene scene_one; this->scene_container[0] = scene_one; this->scene_container[0].image = " "; this->scene_container[0].scene_message = "W
struct game_struct{
scene scene_container[10];
player cPlayer;;
scene scene_one;
this->scene_container[0] = scene_one;
this->scene_container[0].image = " ";
this->scene_container[0].scene_message = "Welcome to the home screen of the game.";
};
它给出了错误“在“this”之前预期的非限定id”。我一直想把它修好,但我想不出来。任何建议都将不胜感激
this->scene_container[0] = scene_one;
this->scene_container[0].image = " ";
this->scene_container[0].scene_message = "Welcome to the home screen of the game.";
在游戏结构
也许你想做的是:
struct game_struct{
scene scene_container[10];
player cPlayer;
scene scene_one;
game_struct(){
this->scene_container[0] = scene_one;
this->scene_container[0].image = " ";
this->scene_container[0].scene_message = "Welcome to the home screen of the game.";
}
};
上述解决方案,
scene\u container[0]
和scene\u one
不引用相同的场景scene\u container
只是从scene\u one
复制分配,这是毫无意义的,因为它们都是在构建game\u struct
时默认构建的。这样更好:
struct game_struct {
scene scene_container[10];
player cPlayer;
scene* scene_one;
game_struct() {
scene_one = scene_container; // points to first element
scene_one->image = " ";
scene_one->scene_message =
"Welcome to the home screen of the game.";
}
};
编辑:我希望我不必把它说出来。但这似乎是我的第一个否定,我想我必须:
#include <string>
#include <iostream>
using namespace std;
struct scene {
string image;
string scene_message;
};
struct player {};
struct game_struct {
scene scene_container[10];
player cPlayer;
scene scene_one;
game_struct() /* all members are default constructed PRIOR TO ENTERING constructor block */
{
this->scene_container[0] = scene_one; /* this is not copy constructing, this is
COPY ASSIGNING two identically constructed
scene objects. All it does it non static member
copy assignment for every member of scene_container[0] */
this->scene_container[0].image = " ";
this->scene_container[0].scene_message =
"Welcome to the home screen of the game.";
}
};
int main(int argc, char** argv) {
game_struct gs;
cout << "scene_one.scene_message : " << gs.scene_one.scene_message << endl;
cout << "scene_container[0].scene_message : " << gs.scene_container[0].scene_message << endl;
}
我认为你不能在这里使用“this”指针。尝试在结构声明中定义的函数中使用它。它如何在游戏结构声明之外使用?它在花括号中…@Monkeyanator声明与函数中的声明不同,对吗
此
隐式传递给对象成员函数的所有非静态函数调用。重新布线OP代码的逻辑以修复较小的编译器错误不是一个可接受的答案,特别是当涉及数组到指针衰减等较差功能时,如果Monkeyanator通过scene_一个引用编辑,然后通过scene_容器[0](比如说,在某种迭代器中)阅读,那么他会非常震惊。据我所知,他希望在类本身中有一个方便的指针,我给出了实现这一点的代码。
scene_one.scene_message :
scene_container[0].scene_message : Welcome to the home screen of the game.