Skocz do zawartości
Masz już aplikację Sharegon?

Odkryj wszystkie możliwości. Dowiedz się więcej

Sharegon.pl

Zainstaluj aplikację Sharegon i korzystaj z powiadomień push oraz licznika nowych aktywności bezpośrednio z ekranu głównego.

Aby zainstalować tę aplikację na iOS i iPadOS.
  1. Tap the Share icon in Safari
  2. Przewiń menu i stuknij Dodaj do ekranu początkowego.
  3. Stuknij Dodaj w prawym górnym rogu.
Zainstaluj aplikację Sharegon na Androidzie
  1. Otwórz Sklep Google Play na swoim smarfonie.
  2. Wyszukaj „Sharegon” w pasku wyszukiwania.
  3. Stuknij „Zainstaluj”, aby pobrać aplikację.

Problem z kompilacją błąd C2440 podczas dodawania Switchbota

Nieaktywny

Featured Replies

Opublikowano

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

 

https://test.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
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;
		}
	}
}
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.

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

Konto

Nawigacja

Skonfiguruj powiadomienia push w przeglądarce.

Chrome (Android)
  1. Stuknij ikonę kłódki obok paska adresu.
  2. Wybierz Uprawnienia → Powiadomienia.
  3. Dostosuj swoje preferencje.
Chrome (Desktop)
  1. Kliknij ikonę kłódki na pasku adresu.
  2. Wybierz Ustawienia witryny.
  3. Znajdź Powiadomienia i dostosuj swoje preferencje.