gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 15:51:06 26 4
gpt4 key购买 nike

编译程序时出现如下错误:

vandenynas.cpp(19) error C2662: 'skaiciavimas::showst' : cannot convert 'this' pointer from 'const skaiciavimas' to 'skaiciavimas &'

这是我的类(class):第一个.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;
};

第一个.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);
}

第二个调用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);
};

.cpp

    #include "skaiciavimas.h"

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

谁能告诉我错在哪里?

最佳答案

问题是你声明了vandenynas::duomenys作为const函数,即它不会改变对象中的任何内容。但它调用skaiciavimas::showst未声明为 const ,这是不允许的。如果您将一种方法声明为 const ,它调用的所有方法,本身或作为对象成员的对象,也必须声明为 const .

关于C++ 错误 C2662 或如何以正确的方式声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8123052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com