我可能已经习惯了Java,并且发现它比应该更难。这是我拥有的。
myObject[0] = new item1(this);
class item1
{
private:
int x;
int y;
public:
item1( passedPointer* pOne )
{
x = 5;
y = 5;
}
int returnX() { return x; }
int returnY() { return y; }
}
然后用另一种方法我想我可以说:
void check()
{
int y = item1.returnY();
int x = item1.returnX();
}
但是我遇到了常见错误:非静态成员引用必须与特定对象相关。
此类item1只有一个实例,最好的方法是什么?这只是我实际在做的事情的简化片段,而不是实际的代码。
答案 0 :(得分:3)
Item1是一个类。您必须先创建它的实例,然后才能访问其非静态成员。尝试查看here以获取一些基本信息。
答案 1 :(得分:3)
void check(){
int y = item1.returnY;
int x = item1.returnX;
}
这在Java中也是不正确的,因为returnX
和returnY
都不是静态的,你需要一个应用操作的对象,你还需要方法调用的括号:< / p>
void check() {
item1 i;
int y = i.returnY();
int x = i.returnX();
}
答案 2 :(得分:3)
也许实施Singleton pattern不会对您造成伤害,因为您只需要该对象的一个实例。您可以将对象声明为函数的全局或静态,然后获取值。
然后,您还可以将函数声明为static,并添加另一个函数来初始化需要由这些方法返回的变量的静态值。根据您的情况,有很多解决方案,这些解决方案无法通过您粘贴的少量代码完全掌握。
答案 3 :(得分:2)
您使用行
创建了class item1的实例myObject[0] = new item1(this);
与JAVA不同,在C ++中有指针和new返回指向对象的指针(因此myObject [0]是指向实例的指针)所以你需要 - &gt;运营商。要激活该方法,您应该写:
myObject[0]->returnX();
如果您希望只有一个实例,而不是将该类实现为单例。