#c #class #declaration
#c #класс #объявление
Вопрос:
я получаю ошибку fallowing при компиляции программы:
vandenynas.cpp (19) ошибка C2662: ‘skaiciavimas::showst’ : не удается преобразовать ‘этот’ указатель из ‘const skaiciavimas’ в ‘skaiciavimas amp;’
вот мои классы: first.h
#pragma once
#include <iostream>
#include <string>
#include "skaiciavimas.h"
using namespace std;
class vandenynas
{
public:
void duomenys (int i, int a, int a0) const;
string GetName()const;
protected:
skaiciavimas sk;
};
first.cpp
#include "vandenynas.h"
skaiciavimas::v vektorV;
void vandenynas::duomenys (int i, int a, int a0) const
{
switch (i)
{
case 0:
vektorV.x=a-a0;
break;
case 1:
vektorV.y=a-a0;
break;
default:
vektorV.z=a-a0;
break;
}
sk.showst(vektorV);
}
второе, где вызывается функция.h
#pragma once
#include <iostream>
#include <string>
using namespace std;
class skaiciavimas
{
public:
struct v
{
int x;
int y;
int z;
};
void showst(v st);
};
.cpp
#include "skaiciavimas.h"
void skaiciavimas::showst(v st)
{
cout<<st.x<<" "<<st.y<<" "<<st.z<<endl;
}
может кто-нибудь сказать, где ошибка?
Комментарии:
1. Пожалуйста, укажите строку, в которой возникает ошибка.
Ответ №1:
Проблема в том, что вы объявляете vandenynas::duomenys
как const
функцию, то есть это ничего не меняет в объекте. Но он вызывает, skaiciavimas::showst
который не объявлен как const
, что недопустимо. Если вы объявляете один метод как const
, все методы, которые он вызывает, сам по себе или объект, который является членом объекта, также должны быть объявлены как const
.
Комментарии:
1. Вы можете вызывать неконстантные методы другого объекта.
2. Извините, теперь я вижу, что объект является членом. Я изменил свой голос.
Ответ №2:
skaiciavimas::showst
не является постоянной функцией-членом. Поскольку vandenynas::duomenys
это функция-член const, все члены this
считаются const и, следовательно, skaiciavimas::showst
не могут быть вызваны.
Комментарии:
1. Вы можете вызывать неконстантные методы другого объекта.
2. Извините, теперь я вижу, что объект является членом. Я изменил свой голос.