Я совершенно новичок в C ++ и у меня очень глупая проблема.
У меня есть класс Graph, и мне нужно создать для него конструктор копирования. Это мой класс:
#include <igraph.h>
#include <iostream>
using namespace std;
class Graph {
public:
Graph(int N); // contructor
~Graph(); // destructor
Graph(const Graph& other); // Copy constructor
igraph_t * getGraph();
int getSize();
private:
igraph_t graph;
int size;
};
В igraph.h
есть функция int igraph_copy(igraph_t * to, const igraph_t * from)
, которая адекватно копирует тип igraph_t
.
Конструктор и деструктор тривиальны и работают нормально, и у меня есть следующий конструктор копирования:
Graph :: Graph(const Graph& other) {
igraph_t * otherGraph = other.getGraph();
igraph_copy(&graph, otherGraph);
size = other.getSize();
}
igraph_t * Graph :: getGraph(){
return &graph;
}
int Graph :: getSize() {
return size;
}
Когда я скомпилировал это, я получил следующие ошибки:
calsaverini@Ankhesenamun:~/authC/teste$ make
g++ -I/usr/include/igraph -L/usr/local/lib -ligraph -c foo.cpp -o foo.o
foo.cpp: In copy constructor ‘Graph::Graph(const Graph&)’:
foo.cpp:30: error: passing ‘const Graph’ as ‘this’ argument of ‘igraph_t* Graph::getGraph()’ discards qualifiers
foo.cpp:32: error: passing ‘const Graph’ as ‘this’ argument of ‘int Graph::getSize()’ discards qualifiers
make: *** [foo.o] Error 1
Я чувствую, что это должно быть что-то очень простое, я не понял, что означает квалификатор const.
Я действительно не знаю C ++ (и я действительно не очень хорошо знаю C, если на то пошло ...), но мне нужно возиться с кодом, созданным людьми, которые знают. (
Любые подсказки или замечания об этом конструкторе копирования также будут очень смиренно оценены. : Р