C++ 在C+中访问对象指针的属性+;

C++ 在C+中访问对象指针的属性+;,c++,pointers,C++,Pointers,我遇到了一个基本问题:试图从C++中的对象指针返回一个属性。 我的测试代码如下,我从类节点创建了一个名为Mynode的对象,它的属性值为int 45 我希望这段代码返回一个指针,而不是数据值(45)。而是得到一个编译错误 “错误C2100:非法间接寻址” #包括 类节点 { 公众: int数据; int*nextnode; 节点(int storedData) { 数据=存储数据; nextnode=nullptr; } }; int main() { 节点Mynode(45); void*No

我遇到了一个基本问题:试图从C++中的对象指针返回一个属性。

我的测试代码如下,我从类节点创建了一个名为Mynode的对象,它的属性值为int 45

我希望这段代码返回一个指针,而不是数据值(45)。而是得到一个编译错误

“错误C2100:非法间接寻址”

#包括
类节点
{
公众:
int数据;
int*nextnode;
节点(int storedData)
{
数据=存储数据;
nextnode=nullptr;
}
};
int main()
{
节点Mynode(45);
void*Node_PTR=&Mynode;
intb=(*Node_PTR).data;

std::coutA
void*
是指向
void
void
不是类型的指针。它缺少类型。它没有可以调用的成员函数。A
void*
可以指向任何对象,过去在用户代码中有一些
void*
的用例。现在不是了。如果你想要指向
的指针,就不要de
,即
节点*

考虑到有关命名的注释,使用
struct
减少冗长,并使用类内初始值设定项和成员初始值设定项列表,因为成员未在构造函数体中初始化,所以代码可以如下所示:

#include <iostream>

struct Node {
    int data;
    int* nextnode = nullptr;  
    Node(int storedData) : data(storedData)
    {}
};    

int main() {
    Node node(45);
    Node* node_ptr = &node;
    int b = node_ptr->data;   
    std::cout << node_ptr << std::endl;
    std::cout << b << std::endl;
}
#包括
结构节点{
int数据;
int*nextnode=nullptr;
节点(int storedData):数据(storedData)
{}
};    
int main(){
节点(45);
Node*Node_ptr=&Node;
int b=节点\u ptr->数据;

std::cout“attribute”是什么意思?void*这是一个void指针,应该是node*Change
void*node\u PTR
node*node\u PTR
(*node\u PTR)数据;可以简化为<代码> NoDEYPPT->数据< /代码>,也可以考虑将该变量重命名为“代码>节点< /COD>或<代码> NoDeTrt<代码>。在标识符中混合< <代码> PascalCase < /代码>、<代码> CAMELCASE < /代码>和<代码> UpPixSnaKeKase< /C> >是不好的形式。
#include <iostream>

struct Node {
    int data;
    int* nextnode = nullptr;  
    Node(int storedData) : data(storedData)
    {}
};    

int main() {
    Node node(45);
    Node* node_ptr = &node;
    int b = node_ptr->data;   
    std::cout << node_ptr << std::endl;
    std::cout << b << std::endl;
}