• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Visual studio nie "widzi" pliku źródła z rozszerzeniem .h

Object Storage Arubacloud
0 głosów
1,011 wizyt
pytanie zadane 16 listopada 2020 w C i C++ przez rain.deer Początkujący (430 p.)

Cześć,

robię teraz zadanie, które pan Zelent omawiał w filmie "Obiektowy C++ odc. 4: Funkcje zaprzyjaźnione". Korzystam z Visual Studio. Kod poniżej jest z pliku main.cpp, oprócz niego są w tym zadaniu jeszcze dwa pliki: przyjaciele.h i przyjaciele.cpp. Oba mam w tym samym folderze projektu. I gdy próbuję uruchomić program on "nie widzi" pliku "przyjaciele.h". Z czego to wynika i jak to naprawić?

#include <iostream>
#include "przyjaciele.h"
using namespace std;

void sedzia()
{
if ((pkt.x >= p.x) && (pkt.x <= p.x + p.szerokosc) && (pkt.y >= p.y) && (ptk.y <= p.y + wysokosc))
   {
       cout << endl; "Punkt" << pkt.nazwa << " nalezy do prostokata: " << p.nazwa;
   }
else 
{
cout << endl << "Punkt" << pkt.nazwa << " lezy poza prostokatem: " << p.nazwa;
}
    
}

int main(Punkt pkt, Prostokat p)
{
    Punkt pkt1(A, 3, 1);
    // pkt1.wczytaj();
    Prostokat p1("Prostokat", 0, 0, 6, 4);
    // p1.wczytaj();
    sedzia(pkt1, p1);

    return 0;
}

 

komentarz 16 listopada 2020 przez adrian17 Ekspert (344,860 p.)

Oba mam w tym samym folderze projektu

A są w projekcie?

Pokażesz screenshot, jak wygląda projekt w VS?

komentarz 16 listopada 2020 przez rain.deer Początkujący (430 p.)

Wygląda to tak: 

komentarz 16 listopada 2020 przez adrian17 Ekspert (344,860 p.)
Hmm, na Twoim screenshocie (niska rozdzielczość btw) jest <przyjaciele.h> zamiast "przyjaciele.h" - to na pewno nie zadziała.
komentarz 16 listopada 2020 przez rain.deer Początkujący (430 p.)

Nawet po zmianie z < > na " " nie działa.sad Oryginalna rozdzielczość screenshota to 1366 na 768. Nie wiem jak wstawić lepszej jakości obrazek.

komentarz 17 listopada 2020 przez WojtaZio23 Użytkownik (660 p.)

masz wpiasne "using namespace std" w pliku przyjaciele.h? Najepiej pokaż jeszcze ten plik.

 

komentarz 17 listopada 2020 przez rain.deer Początkujący (430 p.)

Pełna treść kodu w tym pliku wygląda następująco: 

#include <iostream>

using namespace std;
class Prostokat;
class Punkt
{
    string nazwa;
    float x, y;

public:
    Punkt(string = "A", float = 0, float = 0);
    void wczytaj();
    friend void sedzia(Punkt &pkt, Prostokat &p);
};
class Prostokat
{
    string nazwa;
    float x, y, szerokosc, wysokosc;
public:
    Prostokat(string = "brak", float = 0, float = 0, float = 1, float = 1);
    void wczytaj();
    friend void sedzia(Punkt &pkt, Prostokat &p);
};

 

1 odpowiedź

0 głosów
odpowiedź 17 listopada 2020 przez j23 Mędrzec (194,920 p.)

I gdy próbuję uruchomić program on "nie widzi"

Na pewno o to chodzi? Bo to:

void sedzia()
{
  ...
}

int main(Punkt pkt, Prostokat p)
{
    ...
    sedzia(pkt1, p1);

    return 0;
}

na pewno dobrze nie jest. Od kiedy main przyjmuje takie parametry? Dlaczego wywołujesz sedzia z parametrami, skoro ta funkcja nie przyjmuje argumentów?

komentarz 17 listopada 2020 przez rain.deer Początkujący (430 p.)

Problem w tym, że to nie ja jestem autorką programu. Spisałam po prostu wszystko, co pan Zelent pisał w swoim programie na filmiku. https://www.youtube.com/watch?v=fHGBHwxZ8kk

Nie potrafiłabym jeszcze napisać czegoś takiego, bo dopiero co "liznęłam" nieco problemu obiektowości w c++. Faktem jest, że kompilator pokazywał mi też błędy samego programu, ale najpierw chciałam rozwiązać problem z tym, że visual nie widzi pliku "przyjaciele.h", który jest zapisany w tym samym folderze projektu, co plik główny. To jakiś błąd kompilatora, tylko nie wiem jaki.

komentarz 17 listopada 2020 przez j23 Mędrzec (194,920 p.)

Jeśli nagłówek jest w tym samym folderze co plik załączający, to powinien być widoczny (pod warunkiem, że dasz "" zamiast <>).

Spisałam po prostu wszystko, co pan Zelent pisał w swoim programie na filmiku.

Przecież on tam ma wszystko poprawnie (link). Jakim cudem przepisałaś to w taki sposób?

W pliku, gdzie masz zdefiniowaną klasę Punkt, załącz nagłówek <string> i na samym początku daj #pragma once

komentarz 17 listopada 2020 przez rain.deer Początkujący (430 p.)
Czyli pewnie źle przepisałam z ekranu. Zrobiłam jak poradziłeś, ale visual dalej nie umie otworzyć pliku "przyjaciele.h".
komentarz 17 listopada 2020 przez j23 Mędrzec (194,920 p.)
Pokaż treść błędów (skopiuj je, nie rób screenshota). Coś ciężko mi uwierzyć, że Visual nie może otworzyć pliku, który - jak twierdzisz - jest w tym samym folderze co reszta plików źródłowych.

Podobne pytania

0 głosów
3 odpowiedzi 102 wizyt
0 głosów
0 odpowiedzi 511 wizyt
pytanie zadane 19 października 2020 w C i C++ przez sebastian970 Użytkownik (710 p.)
0 głosów
1 odpowiedź 221 wizyt
pytanie zadane 16 października 2018 w C i C++ przez bart987 Nowicjusz (140 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...