参考

2013-05-09 86 views
1

假设我有这样的事情参考

class HandleInterface { 
     GLuint handle_; 
    protected: 
     void SetHandle(GLuint i) { 
      handle_ = i; 
     } 

    public: 
     GLuint GetHandle() const { 
      return handle_; 
     } 

     virtual ~HandleInterface() {} 
}; 

Buw现在我需要的handle_的参考。

// I would need &handle_ 
glGenBuffers(1,&handle_); 

我需要为我的handle_写另一个吸气剂吗?或者如何从我的getter方法中获得handle_的引用?

而且glGenBuffers某种程度上侵犯了我的SetHandle方法,因为它应该只设置handle_虽然SetHandle方法,而不是一个,虽然参考。任何想法如何我可以避免这一点?

+1

你有没有真正的理由使用getter和setter?是否有(或将会)有一些你需要维护的不变量?它目前看起来不像。 – 2013-05-09 12:42:34

+0

不,我只是认为getter和setter是很好的做法,但是现在我相信这里可能不是使用getter和setter的怪兽想法 – 2013-05-09 12:43:44

回答

2

如果你想保持handle_完全封装,通过一个局部变量来glGenBuffers

GLuint handle; 
glGenBuffers(1, &handle); 
SetHandle(handle);