これは間違いなく多くなってきたものですが、私はこのバージョンは多少異なると思います。コードに次のエラーが表示されます error C2512: 'DataTypes::DateTime': no appropriate default constructor available
このクラスが持つインターフェースDataType
のオフ継承C2512エラーrefクラスを使用して
public ref class DateTime : DataType {
public:
DateTime();
//just highlighting that the constructor is available in the class and hasn't been missed
}
:このエラーは、最近、我々は次のような参照クラスを持っている基本的に.NET4.6
に.NET 2からアップグレード中に登場しています - 静的コンストラクタは次のようになります。
public interface class DataType {
static DataType() {
}
}
そしてこれは、すべて私たちがエラーに
を取得したところで、別のクラスの内部で縛られますpublic ref class DateCounter {
static DateTime dateTime;
}
は今 - 私はこのコンストラクタを使用するためにそれを伝える、強制的になりそうだ、次の
public ref class DateCounter {
static DateTime dateTime = new DateTime();
}
とエラーを修正するために管理してきました - しかし、セットアップのこの種として以内に非常に多く使用されていますアプリケーション、それはすべてを通過し、それらを修正する大きな仕事です。
私は誰もが、よりエレガントな解決策を知っていたならばちょうど思っていたか、少なくともこれは.NET
編集の2つのバージョン間で変更されているだろう理由与えることができる - だから私は設定した をそれは同じことをしているように見える小さなプロジェクトです。プロジェクト内の3つのファイルがあります - TestClass.h:
はpublic ref class TestClass : TestInterface {
protected:
static int staticItem = 0;
int holdInt;
public:
virtual void Clear();
TestClass();
static TestClass();
TestClass(int takeIn);
TestClass(TestClass% value);
TestClass% operator= (TestClass% input);
};
TestClassMethods.h:コードの定義は
TestClass::TestClass() {
}
TestClass::TestClass(int takeIn) {
this->holdInt = takeIn;
}
TestClass::TestClass(TestClass% value) {
*this = value;
}
void TestClass::Clear() {
this->holdInt = 0;
}
TestClass% TestClass::operator= (TestClass% toAssign) {
this->holdInt = toAssign.holdInt;
return *this;
}
そしてClassLibrary1.cpp
namespace TestNamespace {
ref class TestClass;
public interface class TestInterface {
void Clear();
};
public ref class Counter {
static TestClass counterVariable;
};
}
これらは複製ですか私が取り組んでいるアプリケーションにセットアップして問題の問題を生成する必要があります
これはC++ではありません。それはマイクロソフトのC++/CXのように見える(C++/CLIと改名された?)。 – molbdnilo
はい、それは正しいでしょう - それはC + +のCLIです - 私はタグを更新します –
私は同様のコンセプトを持っていましたが、私はCLRが静的なインターフェイスの定義をサポートしていないと言われました。そしてあなたのクラスが静的コンストラクタを実装するための実際の制約はありません。しかし、静的なDateTime^dateTime;または '値の型'を検索するだけです([link](https://stackoverflow.com/questions/8919032/where-is-this-managed-object-stored/)。 8920544#8920544))。一時的に私の似たような問題が取り消されました:[リンク](https://stackoverflow.com/questions/35085770/is-there-some-easy-workaround-to-the-compile-error-c3232)。以下にいくつかの便利なコメントがありました。 – SchLx