【问题标题】:Triangulation Monotone Polygon in RAD Studio C++ BuilderRAD Studio C++ Builder 中的三角剖分单调多边形
【发布时间】:2020-04-14 05:25:30
【问题描述】:

C++ Builder RAD Studio 中的代码错误:[bcc32c 错误] Unit10.cpp(267):没有匹配的构造函数用于初始化“triangulated_poly”。 怎么了?请帮助,以便一切正常。 //

//---------------------------------------------------------------------------

#include <vcl.h>
#include <vector>
#include <stack>
#pragma hdrstop

#include "Unit10.h"

using namespace std;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm10 *Form10;

int ii=0;
//---------------------------------------------------------------------------
__fastcall TForm10::TForm10(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
class triangulated_poly :public polygone {
    Stack stack;
    int stack_length;
    point left_vertex;
    point right_vertex;
    diagonal* diagonals;
    flag_vertex* x_vertexes;
public:
    triangulated_poly(point* U_points, point* L_points, int UPPER_count, int LOWER_count);
    ~triangulated_poly();

    void x_sort();
    void triangulate();

};


triangulated_poly::triangulated_poly(point* U_points, point* L_points, int UPPER_count, int LOWER_count) :polygone(U_points, L_points, UPPER_count, LOWER_count) {
    ..........
}

triangulated_poly::~triangulated_poly() {
        .......
}



void triangulated_poly::triangulate() {
........
}
//---------------------------------------------------------------------------
void __fastcall TForm10::Button1Click(TObject *Sender)
{
HDC hdc=GetDC(Form10->Handle);
for (int i = 0; i < ii; i++)
{
MoveToEx(hdc,s[i].x,s[i].y,NULL);
LineTo(hdc,s[(i+1)%ii].x,s[(i+1)%ii].y);
}
triangulated_poly poly;
poly.triangulate();
}

【问题讨论】:

  • #pragma hdrstop #include "Unit10.h" using namespace std; //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" - 我希望永远不要尝试编写任何跨平台代码,你将面临一些挑战......
  • 请参阅Too many initializers error for a simple array in bcc32,这就是我的构造函数/析构函数的样子……以克服令人讨厌的 BCC32 编译器错误。如果你也想运营商看看这个:GLSL vector math 你为什么不使用 VCL 的 Canvas-&gt;LineToCanvas-&gt;MoveTo ?不需要 GDI/winapi GetDC ... VCL 自己做 不需要再做...

标签: c++ c++builder


【解决方案1】:

线

triangulated_poly poly;

尝试使用其默认构造函数构造triangulated_poly

您从未为triangulated_poly 声明默认构造函数(即除了空参数列表的构造函数),并且没有隐式声明的构造函数,因为您自己声明了至少一个构造函数。所以编译器给你的错误是没有找到合适的构造函数。

要么向triangulated_poly 添加一个默认构造函数,要么构造triangulated_poly,其参数列表与triangulated_poly 的构造函数参数匹配:

triangulated_poly poly{/*arguments here*/};

【讨论】:

  • 谢谢。但是添加后出现错误:[ilink32 Error] Error: Unresolved external 'polygone::{1173}...' referenced from D:\TRIANGULATEMONOTONEPOLYGON2\WIN32\DEBUG\UNIT10.OBJ [ilink32 Error] Error: Unresolved external 'polygone: :{1173}...' 引用自 D:\TRIANGULATEMONOTONEPOLYGON2\WIN32\DEBUG\UNIT10.OBJ [ilink32 错误] 错误:未解析的外部 'triangulated_poly::triangulated_poly()' 引用自 D:\TRIANGULATEMONOTONEPOLYGON2\WIN32\DEBUG\UNIT10 .OBJ [ilink32 错误] 错误:无法执行链接
  • @Allekk 你是否也实现了默认构造函数?您是否编译了所有源文件并将它们全部链接在一起?见What is an undefined reference/unresolved external symbol error and how do I fix it?
  • @Allekk 所以看起来你在多表单应用程序中使用它......因为你的课程是在 form10 cpp 中而不是在 h/hpp 中(或作为单独的文件包含在那里)你任何时候包含来自不同窗口/表单的 form10 标题,您无法解析外部...尝试将您的类移动到单独的文件中,并将其包含在表单 h/hpp 文件中...
猜你喜欢
  • 2012-09-28
  • 1970-01-01
  • 2012-05-06
  • 2015-03-19
  • 2011-07-12
  • 2011-01-14
  • 2011-10-05
  • 1970-01-01
  • 2011-01-24
相关资源
最近更新 更多