Skocz do zawartości
Opublikowano

Siemka. Próbuje dodać switchbot z tego tematu: 

 

https://sharegon.pl/topic/800-zmieniacz-bonusów-fixy/

 

I wyskakuje mi ten błąd podczas kompilacji binki. 

 

PythonSwitchbot.cpp(196,13): error C2440: "inicjowanie": nie można konwertować z "std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const unsigned char,long>>>>" na "std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const unsigned char,long>>>> &"

 

Nie mam pojęcia zupełnie o co chodzi. Pomoże ktoś?

Rozwiązane przez Sevence

Przejdź do rozwiązania

Featured Replies

Opublikowano

Wrzuć tu kod i pełne funkcje w liniach do których są odwołania w tym błędzie, nie chce mi się pobierać paczki. 

Opublikowano
  • Autor
21 minut temu, Sevence napisał(a):

Wrzuć tu kod i pełne funkcje w liniach do których są odwołania w tym błędzie, nie chce mi się pobierać paczki. 

 

Error odwołuje się do tej linii: 

auto& it2 = it->second.find(table.apply_num);
		if (it2 == it->second.end())
		{
			it->second.insert(std::make_pair(table.apply_num, table.max_value));
		}
		else
		{
			it2->second = table.max_value;
		}

 

Cały Error ogólnie wygląda tak:

16>D:\Binka\Client\UserInterface\PythonSwitchbot.cpp(196,13): error C2440: "inicjowanie": nie można konwertować z "std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const unsigned char,long>>>>" na "std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const unsigned char,long>>>> &"
16>(kompilowanie pliku źródłowego „/PythonSwitchbot.cpp”)
16>D:\Binka\Client\UserInterface\PythonSwitchbot.cpp(196,13):
16>Odwołanie niestałe może zostać powiązane tylko z wartościowaniem lewostronnym
16>Kompilowanie projektu „UserInterface.vcxproj” wykonane — NIEPOWODZENIE.

 

 

W załączniku dam te pliki PythonSwitchbot. 

PythonSwitchbot.cpp PythonSwitchbot.h

Opublikowano
  • Rozwiązanie

Twój błąd wynika z użycia referencji do wskaźnika po prostu usuń &.

 

void CPythonSwitchbot::AddAttributeToMap(const TSwitchbottAttributeTable& table)
{
	const auto it = m_map_AttributesBySet.find(table.attribute_set);
	if (it == m_map_AttributesBySet.end())
	{
		std::map<BYTE, long> attribute_map;
		attribute_map.insert(std::make_pair(table.apply_num, table.max_value));

		m_map_AttributesBySet.insert(std::make_pair(table.attribute_set, attribute_map));
	}
	else
	{
		auto it2 = it->second.find(table.apply_num);
		if (it2 == it->second.end())
		{
			it->second.insert(std::make_pair(table.apply_num, table.max_value));
		}
		else
		{
			it2->second = table.max_value;
		}
	}
}
  • Sevence zmienił(a) tytuł na Problem z kompilacją błąd C2440 podczas dodawania Switchbota
Opublikowano
  • Autor
7 minut temu, Sevence napisał(a):

Twój błąd wynika z użycia referencji do wskaźnika po prostu usuń &.

 

void CPythonSwitchbot::AddAttributeToMap(const TSwitchbottAttributeTable& table)
{
	const auto it = m_map_AttributesBySet.find(table.attribute_set);
	if (it == m_map_AttributesBySet.end())
	{
		std::map<BYTE, long> attribute_map;
		attribute_map.insert(std::make_pair(table.apply_num, table.max_value));

		m_map_AttributesBySet.insert(std::make_pair(table.attribute_set, attribute_map));
	}
	else
	{
		auto it2 = it->second.find(table.apply_num);
		if (it2 == it->second.end())
		{
			it->second.insert(std::make_pair(table.apply_num, table.max_value));
		}
		else
		{
			it2->second = table.max_value;
		}
	}
}

 

Jaaa.. Bez kitu.. Nie zauważyłem tego. Przecież na końcu error'u jest napisane. 

 

Dziękuje Ci bardzo dobry człowieku, jestem ślepy.

  • Sevence zablokował(a) ten temat
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.