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

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

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

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

Q&A

0回答

766閲覧

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

dem0nmichik0

総合スコア37

C++Builder

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

0グッド

0クリップ

投稿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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問