0

私はC ++で非常に単純なコードを持っています。これは次のとおりです。

namespace Phoenix
{
    template<typename T>
    struct Ref
    {
    private: T* _instance;
    public: inline Ref(T* instance) { ... }
    public: inline Ref(const Ref<T> &reference) { ... }
    public: inline Ref<T>& operator=(const Ref<T> &reference) { ... }
    };
}

このコードは、Visual 2012 C++ ライブラリにあります。

ここで、最終的なアプリケーションで再利用しようとすると、「C」リンケージを持つテンプレートを宣言できないという C2894 エラーが発生します。わかった。

使いませんでしたextern 'C'...

何か案が ?何か不足していますか?

4

1 に答える 1

1

Roger Rowland のおかげで、ソリューションのバグを修正しました。

"String.h"テンプレート構造体 Ref を使用するファイルに名前を付けました。

私のプロジェクトには(C++ STLから)デフォルトで名前が付けられた別のファイルが存在するため<string.h>、コンパイラは私の代わりにこのファイルを使用したため、バグが発生しました。

最初のものの単純な名前を変更すると、問題が解決しました。

于 2013-07-05T08:55:55.427 に答える