Передайте std :: vector из управляемого тестового проекта VS в управляемый Dll - PullRequest
0 голосов
/ 08 марта 2019

Я пишу модульный тест, используя управляемый проект VS Test.
У меня есть управляемый (CLI / C ++) код, как показано ниже

namespace ClassLibrary1 {
   public ref class Class1
        {
        std::vector<int>* vec1;
    public:
            Class1() {
                this->vec1 = new std::vector<int>();
            }
    void fillVec(std::vector<int> inp) {            
                for (std::vector<int>::iterator it = inp.begin(); it != inp.end(); ++it) {
                    this->vec1->push_back(*it);
                }
        }
}

Я собирал вышеупомянутый проект как DLL.
В моем тестовом проекте я сделал код, как показано ниже, ссылаясь на сгенерированный выше dll.

#using "ClassLibrary1.dll" as_friend
namespace UnitTestDemoProjTwo
{
[TestClass]
    public ref class UnitTest
    {
        ClassLibrary1::Class1 ^c1;
    public: 
[TestInitialize()]
        void MyTestInitialize()
        {
            c1 = gcnew ClassLibrary1::Class1;               
        }
[TestMethod]
        void TestMethod03()
        {
            std::vector<int> temp;
            temp.clear();
            temp.push_back(12);
            temp.push_back(11);
            c1->clearVec();//func in Class1 which will clear the vector
            c1->fillVec(temp);
            Assert::AreEqual(c1->retSizeOfVec(), 2);
        }
    }
}

Я пропустил все остальные операторы include и using в этом коде выше, например using System namease System и include .
Теперь, когда я пытаюсь построить проект, я получаю ошибку ниже

error C2664: 'void ClassLibrary1::Class1::fillVec(std::vector<int,std::allocator<int> > *)': 
    cannot convert argument 1 from 'std::vector<int,std::allocator<_Ty>>' to 'std::vector<int,std::allocator<int> > *'

Я даже пытался c1-> fillVec (& temp); , чтобы соответствовать аргументу, приведенному в комментариях к ошибке, но все равно не повезло.

Может ли кто-нибудь помочь мне, как устранить узкое место?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...