問題タブ [redefinition]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gcc - __forceinline をインラインで #define する方法は?
CodeBlocks/MinGW でコンパイルしようとしている Microsoft コード (XLCALL.CPP) があります。
この行で、コンパイル時エラーが発生します。
これは私が得るエラーメッセージです:
XLCALL.CPP|36|エラー: 'void' の前にコンストラクタ、デストラクタ、または型変換が必要です
__forceinline は Microsoft 固有の言語への追加であり、GCC では認識されないため、このエラーは予期されたものです。
したがって、物事をコンパイルするために、これらの定義を CodeBlocks に追加しようとします (Project Build Options/Compiler Settings/#defines):
ただし、それでも同じエラーが発生します。
__forceinline inline
ダイアログで #define プリプロセッサ コマンド (つまり: ) を指定しないと、次のようになります。
XLCALL.CPP|36|エラー: 数値定数の前に修飾されていない ID が必要です
Visual C++を使用せずに、このようなコードをコンパイルする方法はありますか?
c++ - 単一のクラスにクラス再定義エラーがあります
私は C++ を初めて使用し、ヘッダー ファイル内のクラス定義に問題があります。ヘッダー ファイル (Student.h) のコードは次のとおりです。
コンパイラ エラーは、14 行目 (クラス Student) が 'Student' の再定義であり、15 行目 ({ -- クラス Student に続く中かっこ) が 'Student' の以前の定義であることを示しています。StudentSchedule クラスの最初の 2 つの連続する行に同じエラーが存在します。
コンパイルのどこにも、いずれかのクラスを定義する .c、.cpp、または .h ファイルがありません。なぜこのエラーが発生するのかわかりません。
c++ - 戻り値の型が異なるメンバー関数をオーバーライドする
以下の例を考えてみましょう。
コンパイラは、オーバーライドされた関数の型が競合しているという上記のコードのエラーを返します。派生クラスの関数を異なる戻り値の型でオーバーライドできないのはなぜですか?
関数をオーバーライドするには、派生クラスで基本クラスの仮想メソッドを再定義する必要があると思います。メソッドを再定義するには、メソッドのシグネチャが同じでなければなりません。戻り値の型は署名の一部ではないため、戻り値の型に違いがあっても、メソッドは再定義されると思いますか? 上記のコードの場合、仮想関数func
は派生クラスで別の戻り値の型で再定義されます。しかし、コンパイラはエラーをスローします。私の理解は正しいですか?
c++ - 「class GtkwidgetDef」の再定義
なぜこの再定義エラーが発生するのか本当にわかりません
GtkwidgetDef.h
GtkwidgetDef.cpp
これらの 2 つの機能は、正当な定義とコンストラクターです。
MesFonctions.cpp
CALCU.h
CALCU.cpp
GtkwidgetDef widgets(button); この行でここで間違いを犯したのではないでしょうか。
c++ - マクロ値の再定義または変更
私は現在、MFC C++ で記述された開発済みのプロジェクトに取り組んでおり、次の定義を持つ既存のマクロの問題に直面しています。
コード内から値を変更しようとしていますが、前処理された定義であるため、変更できないと思います。元のマクロ全体を変更せずにこの問題を回避する方法はありますか (プログラムの元の機能に影響を与える可能性があるため)。ある特定の条件でそれを変更しようとしているだけで、他の場所は同じままです。
みんなに知らせるために、使用するつもりの値 (17) で別のマクロ定義を使用してみましたが、うまくいきませんでした。
どんな助けでも大歓迎です。
c++ - クラス C++ 内の静的データ メンバー (クラス) の初期化
親クラス内で静的クラスを宣言して初期化しようとしていますが、あらゆる種類のエラーが発生しているようです。
MainWindow::hWin = (MainWindow*) param;
などを使用してみMainWindow::hWin = new MainWindow((MainWindow*) param));
ましたが、どれも機能していないようです。これを行う適切な方法は何ですか?この件に関して誰かが推奨するリソースはありますか?私はclass
数日間問題に悩まされており、非常にイライラしています.
c++ - メインの複数の派生クラスでの再定義エラー
Object 基本クラスがあり、Item、Person、および Location と呼ばれるいくつかの派生クラスがあります。
これらはそれぞれ Object から派生しているため、それぞれのヘッダー ファイルに Object.h を含める必要があり、すべての派生クラスをメインに含めます。
私はそうしているので、再定義エラーが発生しています。
私が知りたいのは、このエラーを回避するためにこれらのファイルを含める正しい方法は何ですか?
ありがとう!
編集:
object.h
item.h
locale.h
main.cpp
c# - BabelObfuscatorが原因のC++/ CLIでの再定義エラー(C2365)
C#で記述されたアセンブリ(カスタムコントロール付きのDLL)を難読化したとき。C#アプリとVB.NETアプリの両方で機能します。
ただし、C ++ / CLIアプリからDLLを使用すると、ビルド中に次のようなエラーが表示されます。
エラーC2365:'ComponentOwl :: BetterSplitButton :: BetterSplitButton :: e':再定義; 以前の定義は「プロパティ」でした
「e」は、内部列挙型メンバー、プライベートプロパティ名などのいずれかを指します。
Babel難読化ツールに重複した名前を生成しないように指示することは可能ですか(私はそのようなスイッチを見つけていません)。それとも、コードから回避できますか?
c++ - オーバーロードされた関数、再定義、C2371およびC2556 C ++
さて、私は3つのファイルを持っています:
を含むdefinitions.h
を含むfunctions.cpp
メインプログラムには次のものが含まれます。
しかし、エラーC2371:再定義が発生し続けます。異なる基本型とC2556:オーバーロードされた関数は戻り型のみが異なります
私がオンラインで見つけたものはすべて、function.cppファイルがメインに含まれていないことを確認するように言っていますが、その間違いを犯していないので、特に同じように設定されている他のすべての関数を見て、アイデアが不足しています方法(個別の定義と宣言を使用)は機能します。
どんな助けでも素晴らしいでしょう!ありがとうHx
python - Pythonでのクラスメソッドの再定義
コンテクスト
私は自分のコードにいくつかの「プラグイン」(これがこれの正しい定義であるかどうかはわかりません)を持たせようとしています。「プラグイン」とは、モデル(これは科学的なコードです)を、その存在がコード内の他の場所で使用するのに十分な方法で定義するモジュールを意味します。
もちろん、これらのプラグインは、私のコードで定義されたいくつかのモジュール/関数/クラスを使用するテンプレートに従う必要があります。これが私のコードの関連部分の小さなスニペットです:
そしてここに「プラグイン」の関連部分があります:
追加情報と要件
function1
どのモデルプラグインでもまったく同じシグネチャを持っていますが、通常はそれぞれに対して異なるジョブを実行しています。プラグインで定義されていない場合でも、何かを実行できるように、デフォルトの動作が
function1
必要です(さまざまな可能性を試したり、警告/エラーを発生させたりします)。プラグインで
function1
は、このプラグインでのみ定義されている他のいくつかの関数を使用できます。コードがマルチプロセッシングモジュールで実行されているため、これを述べています。子プロセスを呼び出すことができるようにするには、のinstance
インスタンスが必要です。は親プロセスとモデルプラグインで定義されますが、さまざまな子プロセスで使用されます(ただし、変更は行われません)。AllModels
function1
instance
function1
プラグインによって「再定義」されたときに、インスタンスの属性にアクセスできるのは素晴らしいことですModel
(つまりself
)。
問題
私はPythonドキュメントのさまざまなソースといくつかのSOの質問を読みました。私はこの問題に対して2つまたは3つの可能な解決策しか見ていません:
1)クラスでfunction1
メソッドを宣言するのではなく、プラグインが新しいインスタンスを作成するときに属性として設定するだけです。Model
そして、必要なときにいつでもそれを呼び出します。その場合、function1
オブジェクトの属性はおそらくModel
開始されます。None
その1つの注意点は、の「デフォルトの動作」がないことですfunction1
(たとえば、テストなどのコードで処理する必要がありますif instance.function1 is None: ...
)。さらに大きな問題は、この方法でアクセスできないことself
です...
2)どういうわけかPythonデコレータを使用します。私はこれを使用したことがなく、読んだドキュメントはそれほど単純ではありません(使用法の可能性が非常に多いため、単純ではありません)。しかし、それは良い解決策のようです。ただし、パフォーマンスへの影響が心配です(装飾された関数/メソッドの実行が遅くなる可能性があることを読みました)。このソリューションが最良のオプションである場合、それを使用する方法(おそらく簡単なスニペット)と、クラスの属性を使用できるかどうかを知りたいですModel
:
3)モジュールtypes
とそのモジュールを使用するMethodType
...私の場合、それが適切かどうかはわかりません...しかし、私は間違っている可能性があります。
この長い質問の後でわかるように、私はそのようなPython機能にあまり精通しておらず、デコレータについての私の理解は今では本当に貧弱です。いくつかのドキュメントを読み続けている間、問題を処理するための方向性がわからないので、ここで質問する価値があるかもしれないと思いました。
解決
Senderleの答えの美しさは、それが本当に単純で明白であるということです...そしてそれを逃したのは残念です。その質問でSOを汚染してすみません。