使用目标和调用方法?

时间:2012-04-24 15:22:50

标签: c++

我可能已经习惯了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只有一个实例,最好的方法是什么?这只是我实际在做的事情的简化片段,而不是实际的代码。

4 个答案:

答案 0 :(得分:3)

Item1是一个类。您必须先创建它的实例,然后才能访问其非静态成员。尝试查看here以获取一些基本信息。

答案 1 :(得分:3)

void check(){
   int y = item1.returnY;
   int x = item1.returnX;  
}

这在Java中也是不正确的,因为returnXreturnY都不是静态的,你需要一个应用操作的对象,你还需要方法调用的括号:< / 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();

如果您希望只有一个实例,而不是将该类实现为单例。

相关问题