我真的很想做以下事情: (对不起语法,我不知道这是怎么做到的)
struct Data {
int var = 5;
} data;
struct Data2 {
var;
} data2;
data2.var = data;
cout << data2.var.var; //prints 5
基本上我想在一个结构中有一个动态结构变量,它可以被赋予任何结构作为值并通过主结构访问它。
请客气一点。我真的不知道如何更好地解释它,我真的很想这样做并且已经阅读了很多但还没有找到任何方法来做到这一点。
附言。 我不想做以下事情:
struct Data {
int var = 0;
} data;
struct Data2 {
data;
} data2;
我希望它是动态的,也就是说,我可以在程序运行期间随时更改它。谢谢。
最佳答案
从概念上讲,您可能(?)询问引用资料:
#include <iostream>
int main() {
int x = 10;
int & xref = x;
std::cout << xref << "\n";
x = 20;
std::cout << xref << "\n";
}
这将打印:
10
20
引用的基础本质上是一个指针,但它永远不会为空……并且在符号上您不必“取消引用”它。如果您使用指针,上面的内容将如下所示:
#include <iostream>
int main() {
int x = 10;
int * xptr = &x;
std::cout << *xptr << "\n";
x = 20;
std::cout << *xptr << "\n";
}
此处将它们应用到您的示例中,并进行了最小的更改:
#include <iostream>
struct Data {
int var;
};
struct Data2 {
Data & var;
};
int main()
{
Data data = {5};
Data2 data2 {data};
std::cout << data2.var.var << "\n";
data.var = 10;
std::cout << data2.var.var << "\n";
return 0;
}
可能性是“这不是您实际上想要的”(您通常不应该公开成员变量,更不用说引用其他变量的成员变量了)。而且它们不应该全部命名为 var
。等等
尽管如此,引用仍然是语言不可或缺的一部分,值得学习。
(注意:为简洁起见,您可以省略 return 0;
...仅来自 main。这是假定的,并且在标准中是合法的;您可以省略它的参数。但是你必须返回一个整数。)
关于C++分配动态结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28007273/