如何定义一个类中有n个元素的数组

How to define an array with n number of elements inside of a class

本文关键字:元素 数组 何定义 定义 一个      更新时间:2024-05-09

我用C++编写了一个程序,用鞋带法计算多边形的表面积。我已经签入了主代码,该部分工作正常。当我试图将相同的代码放入类中时,问题就出现了。这是头文件的代码:

#include "Tacka.h"
class mnogougao{
public:
Tacka* x;
mnogougao(int n);
float pertlanje(int n);
}

这是类的cpp文件的代码

#include "tacka.h"
#include "tackaa.cpp"
#include "mnogougao.h"
mnogougao::mnogougao(int n){

x = new Tacka [n];
}
float mnogougao::pertlanje( int n){
int j=n-1;
float povrsina=0.0;

for(int i=0;i<n;i++){

povrsina+=(x[i].getx()+x[j].getx())*(x[j].gety()-x[i].gety());
j=i;

}
if(povrsina<0) povrsina*=-1;
povrsina/=2.0;
return povrsina;
}

这是主要代码:

#include <iostream>
#include "Tacka.h"
#include "mnogougao.h"
#include "mnogougao.cpp"
using namespace std;
int main(){
cout<<"Insert number of points of a polygon:"<<endl;
int n;
cin>>n;
mnogougao x(n);
for(int i=0;i<n;i++){ 
cout<<"Insert coordinates of "<<i+1<<". point of the polygon:"<<endl;
float a;
cout<<"X:";
cin>>a;
float b;
cout<<"Y:";
cin>>b;
x.x[i].setx(a);
x.x[i].sety(b);
}
cout<<"Surface area of a polygon is: "<<x.pertlanje(n)<<endl;
system("pause");
}

此外,我忘了添加,这是Tacka类头文件的代码

#pragma once
class Tacka
{
public:
float x,y; 
float getx();
float gety();
void setx(float a);
void sety(float a);
Tacka();
Tacka(float a, float b);
};

这是Tacka类的cpp文件的代码

#include "tacka.h"
#include <iostream>
using namespace std;
Tacka::Tacka(){
x=0.0;
y=0.0;
}
Tacka::Tacka(float a, float b)
{
x=a;
y=b;
}
float Tacka::getx(){
return x;
}
float Tacka::gety(){
return y;
}
void Tacka::setx(float a){
x=a;
}
void Tacka::sety(float a){
y=a;
}

它说我在cpp文件中的构造函数中犯了一个错误:错误C2533:"mnogougao::{ctor}":构造函数不允许返回类型。有人能向我解释一下我犯了什么错误吗?我很确定错误在于声明数组中的多个元素,但我找不到任何可以帮助我解决问题的东西。

类定义末尾缺少一个分号。

这将触发错误

error C2533: 'mnogougao::{ctor}': constructors not allowed a return type

在MSVC(Visual Studio(中。

演示