如何在类中定义具有n个元素的数组[重复]
Posted
技术标签:
【中文标题】如何在类中定义具有n个元素的数组[重复]【英文标题】:How to define an array with n number of elements inside of a class [duplicate] 【发布时间】:2021-03-31 18:48:20 【问题描述】:我一直在用 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 文件中的构造函数中出错:error C2533: 'mnogougao::ctor' : constructors not allowed a return type。有人可以向我解释我犯了什么错误吗?我很确定错误是在某个数组中声明了多个元素,但我找不到任何可以帮助我解决问题的东西。
【问题讨论】:
mnogougao x();
-- 这条线的目的是什么?
改用std::vector<Tacka> x;
,并在构造函数中使用mnogougao(int n) : x(n)
@PaulMcKenzie 这是我主代码中的构造函数。我意识到我忘了正确复制它,所以我在括号内添加了 n。
可能相关或不相关的危险信号:#include "tacka.cpp"
、#include "mnogougao.cpp"
。在不知道确切的错误消息的情况下,也很难诊断,但我怀疑您的 tacka
构造函数中可能有错误。
您永远不应该包含 cpp 文件。
【参考方案1】:
您在类定义的末尾缺少一个分号。
这会触发错误
error C2533: 'mnogougao::ctor': constructors not allowed a return type
在 MSVC (Visual Studio) 中。
Demo
【讨论】:
那是个错误。谢谢你帮助我!以上是关于如何在类中定义具有n个元素的数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章