質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
C++Builder

C++Builderは、C/C++を用いてアプリ開発できる統合開発環境 (IDE) 。DelphiのC++版です。コンポーネントによるビジュアル開発、高機能なコードエディターなどで生産性の高い開発ができます。

Q&A

受付中

「グローバルコンストラクタが必要です」や「グローバルデストラクタが必要です」の警告削除方法を教えてください。

dem0nmichik0
dem0nmichik0

総合スコア37

C++Builder

C++Builderは、C/C++を用いてアプリ開発できる統合開発環境 (IDE) 。DelphiのC++版です。コンポーネントによるビジュアル開発、高機能なコードエディターなどで生産性の高い開発ができます。

0回答

0グッド

0クリップ

347閲覧

投稿2022/01/22 07:34

解決したいこと

 業務でOVHのため,既設装置(BCB5)を新しい言語(Embarcadero C++ Builder 10.2 Tokyo)で既設と同じ表示・動作になるように作り直しています(Win10化)。ソースは同じ警告を出すために,テスト的に作ったアプリです。
その中で,下記1~3と同じ警告が出ました。1~3の警告を削除したいです。警告をダブルクリックすると,Unit2.cppの「AnsiString str;」に移動します。Unit2.cppは,クラスではなく,共通関数です。なぜ,くらすでもないのに「コンストラクタが必要です」や「デストラクタが必要です」と警告が出るのでしょうか?
どなたかご教授お願いいたします。

  1. 宣言にはグローバルコンストラクタが必要です
  2. 宣言には終了時のデストラクタが必要です
  3. 宣言にはグローバルデストラクタが必要です

開発環境

OS:Windows10 64bit
IDE:Embarcadero C++ Builder10.2 Tokyo

ソース

Unit1.cpp

C++

1//--------------------------------------------------------------------------- 2 3#include <vcl.h> 4#pragma hdrstop 5#pragma argsused 6 7#include "Unit1.h" 8#include "Unit2.h" 9//--------------------------------------------------------------------------- 10#pragma package(smart_init) 11#pragma resource "*.dfm" 12TForm1 *Form1; 13//--------------------------------------------------------------------------- 14__fastcall TForm1::TForm1(TComponent* Owner) 15 : TForm(Owner) 16{ 17} 18//--------------------------------------------------------------------------- 19void __fastcall TForm1::Button1Click(TObject *Sender) 20{ 21 showMessage(); 22} 23//---------------------------------------------------------------------------

Unit1.h

C++

1//--------------------------------------------------------------------------- 2 3#ifndef Unit1H 4#define Unit1H 5//--------------------------------------------------------------------------- 6#include <System.Classes.hpp> 7#include <Vcl.Controls.hpp> 8#include <Vcl.StdCtrls.hpp> 9#include <Vcl.Forms.hpp> 10//--------------------------------------------------------------------------- 11class TForm1 : public TForm 12{ 13__published: // IDE で管理されるコンポーネント 14 TEdit *Edit1; 15 TButton *Button1; 16 void __fastcall Button1Click(TObject *Sender); 17private: // ユーザー宣言 18public: // ユーザー宣言 19 __fastcall TForm1(TComponent* Owner); 20}; 21//--------------------------------------------------------------------------- 22extern PACKAGE TForm1 *Form1; 23//--------------------------------------------------------------------------- 24#endif

Unit2.cpp

C++

1//--------------------------------------------------------------------------- 2 3#pragma hdrstop 4#pragma argsused 5 6#include "Unit2.h" 7#include "Unit1.h" 8 9AnsiString str; 10//--------------------------------------------------------------------------- 11void __fastcall showMessage(void) 12{ 13 str = Form1->Edit1->Text; 14 ShowMessage(str); 15} 16//--------------------------------------------------------------------------- 17#pragma package(smart_init)

Unit2.h

C++

1//--------------------------------------------------------------------------- 2 3#ifndef Unit2H 4#define Unit2H 5 6#include <vcl.h> 7//--------------------------------------------------------------------------- 8void __fastcall showMessage(void); 9 10extern AnsiString str; 11//--------------------------------------------------------------------------- 12#endif

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C++Builder

C++Builderは、C/C++を用いてアプリ開発できる統合開発環境 (IDE) 。DelphiのC++版です。コンポーネントによるビジュアル開発、高機能なコードエディターなどで生産性の高い開発ができます。