Я пытаюсь сделать что-то очень простое... объявить строку в классе, а затем присвоить ей значение другой строки, определенной в конструкторе класса.
Я использую управляемую оболочку для неуправляемого класса "Неуправляемый" (использую управляемую оболочку, потому что хочу использовать ее в программе на C#, а то, что я использую, неуправляемое, и его файл .sln не находится под моим контролем)
Как видите, я попытался включить как можно больше строковых заголовков.
#pragma once
#include <string>
#include <string.h>
#include <cstring>
#include <iostream>
using namespace std;
using namespace System;
using std::string;
namespace UnmanagedWrap {
public ref class Class1
{
// TODO: Add your methods for this class here.
public:
Unmanaged *pu; //pointer to the Unmanaged class
//the constructor will allocate the pointer pu
int a;
int b;
std::string filePath; //try CString() when get back
Class1(int a_In, int b_In, std::string filePath_In) : pu(new Unmanaged()) { //constructor
a = a_In;
b = b_In;
filePath = filePath_In; //trying to assign filePath to the inputted filePath_In.......
}; //end of constructor
Это дает мне 2 ошибки:
Первый относится к строке std::string filePath;
1>c:\users\ngrace\documents\visual studio 2010\projects\unmanagedwrap\unmanagedwrap\UnmanagedWrap.h(21): error C4368: cannot define 'filePath' as a member of managed 'UnmanagedWrap::Class1': mixed types are not supported
Второй относится к строке filePath = filePath_In;
1>c:\users\ngrace\documents\visual studio 2010\projects\unmanagedwrap\unmanagedwrap\UnmanagedWrap.h(25): error C2678: binary '=' : no operator found which takes a left-hand operand of type 'std::string' (or there is no acceptable conversion)
Я очень растерялся, так как часами искал ответ...
Некоторые страницы, на которые я обратился за помощью:
Включение заголовков из неуправляемого кода C++ внутри C++/ CLI-код
Смешанные типы не поддерживаются
(Я бы опубликовал больше, но для этого мне нужна репутация не ниже 10....)
Любые идеи о том, почему я получаю эти ошибки?
std::string
не является управляемым типом , поэтому его нельзя поместить в управляемую кучу. - person Bo Persson   schedule 14.07.2016