![](/img/trans.png)
[英]Error: invalid operands of types 'float' and 'float[0]' to binary 'operator*'
[英]Invalid operands of types 'float*' and 'float*' to binary 'operator*'
我不知道為什么我會收到這個錯誤。 就像a*a
將a*
視為指針( float*
到float*
是否與float
到float
相同)。 顯然,當我在子類中聲明a
時,問題得到了解決,但關鍵是我希望我的子類自動從我的父類 class 獲得它。
當我添加“float a;”時還有一件事到程序可以運行的每個子類。 所以我這樣做只是為了測試它是否有效,但沒有。 浮點數 a 在 setA 中沒有值。 我剛剛添加了 cout<<a; 在a = b之后;。
#include"Oblik.h"
#include<cmath>
using namespace std;
class Jednakostranicni : public GeometrijskaFigura{
float P(){
return (a*a*sqrt(3))/4; //12 13 C:\Users\Name\Desktop\prvi.cpp [Error] invalid operands of types 'float*' and 'float*' to binary 'operator*'
}
float O(){
return a+a+a; //15 12 C:\Users\Name\Desktop\prvi.cpp [Error] invalid operands of types 'float*' and 'float*' to binary 'operator+'
}
};
class Kvadrat : public GeometrijskaFigura{
float P(){
return a*a;//23 12 C:\Users\Name\Desktop\prvi.cpp [Error] invalid operands of types 'float*' and 'float*' to binary 'operator*'
}
float O(){
return a+a+a+a;//26 12 C:\Users\Name\Desktop\prvi.cpp [Error] invalid operands of types 'float*' and 'float*' to binary 'operator+'
}
};
class Krug : public GeometrijskaFigura{
float P(){
return a*a*3.14;//34 12 C:\Users\Name\Desktop\prvi.cpp [Error] invalid operands of types 'float*' and 'float*' to binary 'operator*'
}
float O(){
return 2*a*3.14;//37 12 C:\Users\Name\Desktop\prvi.cpp [Error] invalid operands of types 'int' and 'float*' to binary 'operator*'
}
};
int main(){
GeometrijskaFigura *f;
int x;
cin>>x;
f->setA(x);
f=new Jednakostranicni;
cout<<"Jednakostranicni-P: "<<f->P()<<" O: "<<f->O()<<endl;
f=new Kvadrat;
cout<<"Kvadrat-P: "<<f->P()<<" O: "<<f->O()<<endl;
f=new Krug;
cout<<"Krug-P: "<<f->P()<<" O: "<<f->O()<<endl;
return 1;
}
// this is Oblik.h file code
#include<iostream>
using namespace std;
class GeometrijskaFigura{
protected: float a;
public:
void setA(float b){
a=b;
}
virtual float P()=0;
virtual float O()=0;
};
您有未定義的行為,因為f
未初始化:
GeometrijskaFigura *f;
int x;
std::cin >> x;
f->setA(x); // UB: use uninitialized f.
應該
int a;
std::cin >> a;
Jednakostranicni j;
j.setA(a);
std::cout << "Jednakostranicni-P: " << a.P() << " O: " << a.O() << std::endl;
Kvadrat k;
k.setA(a);
std::cout << "Kvadrat-P: " << k.P() << " O: " << k.O() << std::endl;
Krug krug;
krug.setA(a);
std::cout << "Krug-P: " << krug.P() << " O: " << krug.O() << std::endl;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.