C++ C++;错误C2662或如何以正确的方式声明

C++ C++;错误C2662或如何以正确的方式声明,c++,class,declaration,C++,Class,Declaration,在编译程序时,我得到了衰减错误: vandenynas.cpp(19)错误C2662:“skaiciavimas::showst”:无法将“this”指针从“const skaiciavimas”转换为“skaiciavimas&” 这是我的课程: 首先,h 第二个是function.h #pragma once #include <iostream> #include <string> using namespace std; class skaiciavimas {

在编译程序时,我得到了衰减错误:

vandenynas.cpp(19)错误C2662:“skaiciavimas::showst”:无法将“this”指针从“const skaiciavimas”转换为“skaiciavimas&”

这是我的课程: 首先,h

第二个是function.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);
};
#pragma一次
#包括
#包括
使用名称空间std;
skaiciavimas类
{
公众:
结构v
{
int x;
int-y;
intz;
};
void showst(v st);
};
.cpp

#包括“skaiciavimas.h”
void skaiciavimas::showst(v st)
{

cout问题在于,您将
vandenynas::duomenys
声明为
const
函数,即它不会更改对象中的任何内容。但它调用
skaiciavimas::showst
,该函数未声明为
const
,这是不允许的。如果您将一个方法声明为
const
,则它调用的所有方法都在其中self或作为对象成员的对象也必须声明为
const

问题是您将
vandenynas::duomeys
声明为
const
函数,即它不会更改对象中的任何内容。但它调用
skaiciavimas::showst
,而不是声明为
const
,这是不允许。如果将一个方法声明为
const
,则它调用的所有方法本身或作为该对象成员的对象也必须声明为
const
skaiciavimas::showst
不是一个const成员函数。由于
vandenynas::duomeys
是一个const成员函数,因此
this
被认为是常量,因此不能调用
skaiciavimas::showst
skaiciavimas::showst
不是常量成员函数。由于
vandenynas::duomeys
是常量成员函数,因此
this
的所有成员都被认为是常量,因此
skaiciavimas::showst
c无法调用。

请指明错误发生的行。请指明错误发生的行。您可以调用其他对象的非常量方法。抱歉,我现在看到该对象是成员。我更改了投票。您可以调用其他对象的非常量方法。抱歉,我现在看到该对象是成员。我更改了vote.您可以调用其他对象的非常量方法。抱歉,我现在看到该对象是成员。我更改了投票。您可以调用其他对象的非常量方法。抱歉,我现在看到该对象是成员。我更改了投票。
    #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);
}
#pragma once
#include <iostream>
#include <string>
using namespace std;
class skaiciavimas
{
public:
    struct v
    {
        int x;
        int y;
        int z;
    };
    void showst(v st);
};
    #include "skaiciavimas.h"

void skaiciavimas::showst(v st)
{
    cout<<st.x<<" "<<st.y<<" "<<st.z<<endl;
}