1

Windows アプリを linx に移植しています。CArray MFC メソッドを Linux に移植しようとしています。移植するCArrayは

CArray<double,double> min;

私はこれに相当するものを作りました...

#include <iostream>
#include <vector>
#include <list>

int main ()
{
        struct values
        {
            double value1;
            double value2;
        };
        typedef std::vector<values> CArray;
        CArray min;
        CArray max;
    return 0;
}

しかし、私は次のようなエラーが発生しています...

vec1.cpp: In function ‘int main()’:
vec1.cpp:12:29: error: template argument for ‘template<class _Alloc> class std::allocator’ uses local type ‘main()::values’
vec1.cpp:12:29: error:   trying to instantiate ‘template<class _Alloc> class std::allocator’
vec1.cpp:12:29: error: template argument 2 is invalid
vec1.cpp:12:37: error: invalid type in declaration before ‘;’ token

このCArrayのLinuxへの移植に取り組んでいる人がいる場合は、解決策を提供してください。

4

3 に答える 3

2

最初の行はerror、問題が何であるかを説明しています:

template argument for ‘template<class _Alloc> class std::allocator’ uses local type ‘main()::values’

さて、考えてみましょう...コンパイラvaluesがメインに対してローカルであることに文句を言う場合、どうすればそれを修正できますか? おそらく、valuesメインからローカルにしないようにすることはできますか? したがって、あなたが探している答えは、宣言をvaluesmain の外に移動し、グローバル スコープに移動することです。

もちろん、問題は質問が間違っていることです: 構造体と 2 つのdouble値がstd::vector? 結局のところ、あなたが示した は 2 つの値CArrayを保持していません。doubleそれは1つを保持するのでstd::vector<double>、トリックを行う必要があります. このコードを移植する際に役立つドキュメントをCArray見つけることができます。

于 2013-04-26T08:46:13.873 に答える
2

MFC に相当する STLCArray<double,double>は単純にstd::vector<double>.

于 2013-04-26T09:21:14.733 に答える