c++ - getter 和 setter 的错误

标签 c++ vector getter-setter

我有一个顶点 vector ,我希望最初将 vertice.setVisit 设置为 false 或 0。我为此定义了一些 getter 和 setter,但出现了一些类型错误。代码如下:

//Vector:
std::vector<project3::Vertex<VertexType, EdgeType>*> Vertice1;

//Class containing methods:
template <class VertexType, class EdgeType> class Vertex{
protected:
    //std::vector<std::pair<int, EdgeType>> VertexList;
    VertexType vertice;
    EdgeType edge;
    int num;
    int mark;
    //int status=0;

public:

    void setNum(int){ this.num = num; }
    int getNum() { return num; }
    int getMark(){ return mark; }
    void setVisit(int) { this.mark = mark; }
};

在某些函数中,我将值分配给它:

for(int i=0; i<g1.Vertice1.size(); i++)
{
    g1.Vertice1.at(i)->setNum(0);
    g1.Vertice1.at(i)->setVisit(0);
}

下面是我在类的函数定义中编译“this.mark=mark”和“this.num=num”的代码时遇到的错误。

Error: left of '.mark' must have class/struct/union
 Error: left of '.num' must have class/struct/union

这不是通过 getter 和 setter 赋值的正确方法吗?

最佳答案

在 C++ 中,this 是指针类型。尝试 this->mark(*this).mark

编辑: 正如理查德在下面指出的那样,还要确保为您尝试分配的参数命名。在上下文中,this->mark = markthis->mark = this->mark 相同。除非 mark 是一个参数,否则 this 在这种情况下确实是不必要的。所以实际上,您可以通过执行以下操作在您的示例中一起摆脱 this :

void setVisit(int newMark) { mark = newMark; }

问候,
丹尼斯 M.

关于c++ - getter 和 setter 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5615888/

相关文章:

c++ - 派生类调用错误的基类构造函数

c++ - 如何在另一个类中专门化模板类的构造函数?

c++ - Objective-C++中的智能指针可以完全取代ARC吗?

c++ - 如何组合两个整数 vector

r - 当 R 中另一个向量为 TRUE 时,保留向量中的值

c++ - 如何从 fgets 读取整个整数流并推回一维 vector ?

Python setter 也返回一个值

android - 初始化具有 getter 和 setter 的字段?

c++ - 将 SAFEARRAY 变体从 c++ dll 传递给 vba

javascript - 实现点符号 Getter/Setter