Autocomplete nazw klasy razem z przestrzenią nazw

0

Hej,
mam problem z uzupełnianiem kodu przez CLion'a, mianowicie chodzi o to, że podpowiada mi nazwy z pełną ścieżką namespace'ową tj. np.:

Mamy plik nagłówkowy:

namepace A::B::C::D{
  class SomeClass{
  public:
    void someFunction();
  }
}

Potem jak przechodzę do pliku źródłowego to pomimo, że piszę w dokładnie tym samym namespace'ie to dostaję taki twór:

namepace A::B::C::D{
  void  A::B::C::D::SomeClass::someFunction() {}
}

Czy ktoś wie dlaczego tak się dzieje i jak to naprawić?

0

W Twoim przypadku CLion automatycznie podpowiada pełną ścieżkę namespace'u, ponieważ korzystasz z niej w kodzie. Można jednak skonfigurować środowisko tak, aby podpowiadało jedynie nazwy elementów bez całej ścieżki namespace'u.

Aby to zrobić, musisz przejść do ustawień CLiona i wprowadzić odpowiednie zmiany w sekcji "Editor" -> "Code Completion". Znajdziesz tam opcję "Insert namespace qualifiers when completing symbol" (wstawiaj kwalifikatory namespace przy uzupełnianiu symboli). Wyłącz tę opcję, aby zobaczyć jedynie nazwy elementów bez pełnej ścieżki namespace'u.

Jeśli nadal będziesz miał problemy z podpowiadaniem nazw bez pełnej ścieżki namespace'u, możesz spróbować usunąć plik indeksu CLiona (.idea/workspace.xml) i zrestartować IDE. To może pomóc w rozwiązaniu problemu z podpowiadaniem nazw.

0

Wygląda na to, że problemem jest brak odpowiedniego wpisu w pliku konfiguracyjnym Clion'a dotyczącego ustawień dla namespace'ów. Aby naprawić ten problem, możesz spróbować zmienić ustawienia edytora w następujący sposób:

Otwórz ustawienia Clion'a, klikając w menu "File" -> "Settings".
W lewym panelu wybierz "Editor" -> "Code Style" -> "C++".
Kliknij przycisk "Edit" po prawej stronie "Namespace qualifiers".
Zaznacz opcję "Shorten namespaces qualified with" i ustaw odpowiedni poziom skrócenia, na przykład "2".
Kliknij przycisk "OK", a następnie "Apply" lub "OK", aby zastosować zmiany.
Po wykonaniu tych kroków, powinieneś zobaczyć tylko nazwy klas i funkcji w namespace'ie, bez pełnej ścieżki kwalifikowanej.

2

masz literówkę. namepace zamiast namespace.

0
LukeJL napisał(a):

masz literówkę. namepace zamiast namespace.

spokojnie, spokojnie, już Ci wszystko wytłumaczę, słowo kluczowe namespace jest elementem składni języka C++, więc w przypadku takiej literówki miałbym już problem na etapie kompilacji, więc to ewidentnie wskazało by mi, że przyczyną może być fakt, że CLion widzi odmienne zakresy. Rozumiem, że chciałeś pomóc i doceniam to, jednak bez znajomości tak elementarnej wiedzy po prostu nie byłeś w stanie, a ja ze swojej strony za szybko założyłem, że wynika to z Twojej uszczypliwości, za co bardzo Cię przepraszam. Jeśli chodzi o mój problem to odpowiedzi @Marcin Rekut i @uziom mi dostatecznie pomogły. Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1