#include <QtCore/QCoreApplication>
#include "GRcl.cpp"
#include <iostream>
#include <vector>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
GRAPH G;
GRAPH::assign(G);
return 1;
}
Непонятная ошибка Qtcreator
error: cannot call member function `void GRAPH::assign(GRAPH)' without object
main.cpp
Код:
GRcl.cpp
Код:
#include <vector>
#include <iostream.h>
class GRAPH {
public:
int ** War;
void assign (class GRAPH G)
{
int N,CONvert,EWeight,i;
cout << "type in number of verts"<< endl;
cin>>N;
for (i=0; i<N ; i++)
{
for ( ; ; )
{
cout << "Assign vert."<<i<<endl;
cout << "connect to vert... (0 to finish)"<<endl;
cin>>CONvert;
if (CONvert==0) break;
cout<< "Assign weight of edge"<<i<<"-"<<CONvert<<endl;
cin>>EWeight;
G.War[CONvert]=EWeight;
cout<<" Edge "<<i<<"-"<<CONvert<<" created."<<endl;
}
}
}
};
#include <iostream.h>
class GRAPH {
public:
int ** War;
void assign (class GRAPH G)
{
int N,CONvert,EWeight,i;
cout << "type in number of verts"<< endl;
cin>>N;
for (i=0; i<N ; i++)
{
for ( ; ; )
{
cout << "Assign vert."<<i<<endl;
cout << "connect to vert... (0 to finish)"<<endl;
cin>>CONvert;
if (CONvert==0) break;
cout<< "Assign weight of edge"<<i<<"-"<<CONvert<<endl;
cin>>EWeight;
G.War[CONvert]=EWeight;
cout<<" Edge "<<i<<"-"<<CONvert<<" created."<<endl;
}
}
}
};
ошибка говорит что нет объекта при вызове функции GRAPH::assign();
но есть же он : GRAPH::assign(G)
в чем дело?
Попробуй создать .hpp файл, в который вынести объявление класса, а затем .hpp файлик подключить к main.cpp
Ты не создал объект типа GRAPH (точнее создал, но не вызвал его метод assign), метод assign() которого вызываешь; к тому же метод assign() не объявлен в классе как статический (с модификатором static). Отсюда и возникает ошибка. В данном случае создавать объект типа GRAPH и передавать методу assign() тот же объект крайне глупо, в этом случае лучше сделать метод assign статическим, тогда и объект создавать не надо и появится смысл передавать методу assign() объект типа GRAPH, либо вообще стоит пересмотреть назначение метода assign().