#include "stdafx.h"
#include <iostream>
using namespace std;
class thing{
public:
int stuff, stuff1, stuff2;
void thingy(int stuff, int *stuff1){
stuff2=stuff-*stuff1;
}
}
int main(){
thing t;
int *ptr=t.stuff1;
t.thingy(t.stuff, *ptr);
}
我一直在练习类和C ++中的指针。我正在尝试做的是通过将指针传递给stuff1的值来修改thing类中的stuff2数据成员。我该怎么做呢?
答案 0 :(得分:2)
您正在创建一个指向类型指针的变量:如果您想要一个指向t.stuff1
的指针,请将其地址设为:
int* ptr = &t.stuff1;
___^ here you are taking a reference (address)
然后,将该指针传递给您的thing::thingy
方法:
t.thingy(t.stuff, ptr);
__^ don't dereference the pointer, your function takes a pointer
答案 1 :(得分:0)
试试这个:
int *ptr;
*ptr = t.stuff1;
t.thingy( t.stuff, ptr);
答案 2 :(得分:0)
您应该传递地址:
*ptr = &(t.stuff1);
答案 3 :(得分:0)
我可能很晚才参加派对,但我想得到一些好的评论和测试
//#include "stdafx.h"
#include <iostream>
using namespace std;
//class declaration
class thing{
public:
int stuff, stuff1, stuff2;
thing(){//constructor to set default values
stuff = stuff1 = stuff2 = 10;
}
void thingy(int param1, int *param2){
stuff2=param1-*param2;
}
};
//driver function
int main(){
thing t;//initialize class
cout << t.stuff << ' ' << t.stuff1 << ' ' << t.stuff2 << endl;//confirm default values
int *ptr= &t.stuff1;//set the ADDRESS (&) of stuff1 to an int pointer
cout << *ptr << endl;
t.thingy(t.stuff, ptr); //call function with pointer as variable
cout << t.stuff1;
}
答案 4 :(得分:0)
int *ptr=t.stuff1;
你不能将int转换为int * t.stuff1是一个int值,而不是int的指针 试试这个:
int *ptr=&t.stuff1;
你应该添加“;”在类的定义结束时,像这样:
class Thing {
...
};
当你调用t.thingy时,第二个参数是int * 但* ptr是一个int值,而不是指针。 ptr是一个指针,而不是* ptr。试试这个:
t.thingy(t.stuff, ptr);
你应该知道:
int i_value = 1;
int* p_i = &i_value;
int j_value = *p_i;
在这种情况下: i_value的类型j_value * p_i是int p_i的类型是int *