在哪个C++编译器中,我可以为结构变量赋值
In which C++ Compilers I can assign values to struct variables?
我不确定我应该如何命名这个问题。这可能是一个菜鸟问题,但无论如何...
我现在真的不知道为什么在 C++ 中以 struct
分配值在 Linux(Ubuntu) 中不起作用,但在 Windows 中不起作用(我在 Windows 中编译同一程序时出错)
这取决于编译器,是吗?或者还有别的事情我应该知道?
#include <iostream>
#include <fstream>
const char data[] = "data.txt";
const char result[] = "data_result.txt";
const int Cn = 10;
struct Players{
/*Assigning values in struct does not work in windows */
int Health = 100;
int Mana = 120;
int Experience = 0;
};
struct Players Player[Cn];
int main(){
return 0;
}
将
"默认"值分配给C++中的结构或类是一项仅在 C++11 中才成为一项功能的功能。因此,可以公平地说,您的 Windows 编译器要么不支持 C++11,要么没有收到正确的编译参数来使用 C++11 进行编译。
您的问题是"我可以在哪个C++编译器中为结构变量赋值"。
我的答案是"从所有编译的c ++编译器,符合c ++ 98向前"。 都允许初始化结构数据属性。
即使我设置了编译器选项 std=c++98,以下内容也有效
它的作用是避免C++11功能,并将数据属性初始化移动到用户定义的默认ctor中。
struct Players
{
int Health;
int Mana;
int Experience;
Players() : Health(100), Mana(120), Experience(0)
{
}
// an array of Cn Players will build Cn copies,
// all initialized to these same 3 values of the default ctor.
};
是的,您的代码结构确实提供了编译器 ctor(以及其他一些方法属性)。
是的,我想你真的不想使用 c++98。
更新
以下是另一个默认 ctor,尽管它可能看起来不像。
struct Players
{
int Health;
int Mana;
int Experience;
Players(int aHealth=100, int aMana=120, int anExperiance=0) :
Health(aHealth), Mana(aMana), Experience(anExperience)
{
}
};
这是默认的 ctor,因为您可以将其调用为"玩家玩家();",并且所有方法默认值都将适用。
您可以使用"= delete."语句控制编译器为结构/类提供的内容。
您可以命令编译器不提供的方法
// coding standard: disallow when not used
T(void) = delete; // default ctor (1)
~T(void) = delete; // default dtor (2)
T(const T&) = delete; // copy ctor (3)
T& operator= (const T&) = delete; // copy assignment (4)
T(const T&&) = delete; // move ctor (5)
T& operator= (const T&&) = delete; // move assignment (6)
只需替换 T 您的类名(即玩家)
请记住,当您不想使用这些方法之一时,您不允许这样做。 如果提供了编译器 offer 方法的替代方法,请不要禁止。
相关文章:
- 我可以检测和更改 gcc/g++ 中结构的当前数据对齐设置吗?
- 我可以在 C++ 中将数据成员/变量从其定义之外添加到结构中吗?
- 我可以使用哪种数据结构来处理这种方式
- 我可以使用哪种数据结构来释放连续内存中的内存?
- 我可以安全地将浮点数的结构转换为浮点数组吗C++?
- 在C++我可以在不在本地声明结构的情况下将结构作为指针传递吗?
- 我想重置一个C++结构统计,我可以以某种方式使用 stat() 语法吗?
- 在 OS X 上的 ifconfig.h 的 ifadder 结构中,我可以将ifa_data转换为什么?
- 如何将向量添加到结构中以创建一个库存系统,在该系统中,我可以仅使用一个结构向系统添加多种不同的葡萄酒
- 我可以通过指定结构或类来避免前向声明
- stl 中是否有任何数据结构可以在 O(1) 或 O(log n) 中插入元素,我可以在其上编写自己的bin_searc
- 我可以使用 std::sort 对 C 样式数组(在我的结构情况下)进行排序吗?
- 如果我想在执行过程中将其内存减少一半,我可以使用哪种数据结构
- 我可以避免在std ::变体中明确编写每个结构的构造函数
- 我可以在没有结构的情况下使用`hana :: keys'
- 我可以让 c++ 代码结构相互看到吗?
- 我可以为一个包含向量的C++结构写一个二进制吗
- 我可以合法地将指向结构成员的指针强制转换为指向该结构的指针吗
- 我可以部分实现接口层次结构吗
- 我可以使用枚举作为结构名称吗