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

Kompilator to odrzuca ale ja bardzo chce miec taki efekt jak to zrobic ?

Object Storage Arubacloud
0 głosów
192 wizyt
pytanie zadane 12 lutego 2016 w C i C++ przez 0xf Dyskutant (8,180 p.)
Czesc, koduje sobie pewna klase w C++, dosyc specyficzna klase chodzi o bazy danych.

Deklaruje sobie strukture w klasie, udalo mi sie zadeklarowac tylko jedna referencje i to chyba dlatego ze referencja ta jest do czystego obiektu.

Wrzucam kod :

 struct references_to_Postgre_Objects //l
  {
    connection C; //To nie jest obiekt transakcyjny, on sluzy do zainicjonowania obiektu transakcyjnego W klasy "work".
    connection &C_reference= C;
    //work W(C); //to jest obiekt transakcyjny
    //work &W_reference = W;
    //nontransaction N(C);//to jest obiekt nietransakcyjny
    //nontransaction &N_reference = N;

  };

To co jest zakomentarzowane jest odrzucane przez kompilator, wiem ze tworzenie refencji do prawdopodobnie metody klasy jest niedorzeczne ale kiedy chce zrobic referencje do samego obiektu to przekierowywuje mnie do kodu biblioteki (<pqxx/pqxx>, czyli postgresql dla C++) i zacina mi sie kompilator.

A samego obiektu nie moge zadeklarowac bo dzieje sie to co napisalem powyzej w dokumentacji pisali ze te obiekty trzeba tworzyc w taki wlasnie dziwny sposob.

No dobra chodzi o to ze chcialbym miec referencje do tych obiektow ktore na chwile obecna tworzy sie za pomoca metod. Jezeli ktos wie o co chodzi prosze o pomoc.

PS: Wszystkie te obiekty pochodza od klas z tej biblioteki <pqxx/pqxx>

Pozdrawiam

1 odpowiedź

+1 głos
odpowiedź 12 lutego 2016 przez niezalogowany

Musisz wykorzystać wskaźnik, więc taki zapis: work &W_reference = W; zamień na:

work *W_reference = &W;

 

komentarz 12 lutego 2016 przez 0xf Dyskutant (8,180 p.)
ok, tak zrobie. A jaki jest powod dla ktorego nie moge uzyc referencji, chcialbym zrozumiec swoj blad ;/ .

Pozdrawiam dzieki :D
komentarz 12 lutego 2016 przez niezalogowany
Bo taki zapis: [typ danych] &zmienna, jest nielegalny. Jest legalny jedynie przy przekazywaniu argumentów do funkcji/metody.

Radzę ci poczytać o wskaźnikach jeżeli nie miałeś z nimi styczności, bo inaczej bardzo szybko natkniesz się na problemy,
komentarz 12 lutego 2016 przez notabigthreat Mądrala (7,060 p.)

Taki zapis raczej jest legalny.

int tablica[5];
int& srodek = tablica[2];
komentarz 13 lutego 2016 przez 0xf Dyskutant (8,180 p.)

Dobra sprobowalem ze wzkaznikami ale dzieje sie cos dziwnego plik naglowkowy .hpp tez odpowiednio podmienilem.

Zeby sprawdzic dlaczego wszystko sie tak wykrzacza sprobowalem napisac cos takiego bez deklarowania tych dziwacznych obiektow z pqxx/pqxx.

Kod :

#include "TabelaPostgreSQL.hpp"
#include <iostream>
#include <pqxx/pqxx>
#include <array>
#include <vector>
#include <string>

using namespace std;
using namespace pqxx;

int main()
{

  TabelaPostgreSQL test;
  test.connect_to_db();

  return 0;
}

class TabelaPostgreSQL
{
private:
  string name;
  string data_base_connection_values [5];

public:
  void connect_to_db()
  {
    cout<<"You're going to connect to a database."<<endl;
    cout<<"Please input the following values : "<<endl;
    cout<<"Database name : "; cin>>data_base_connection_values[0]; //dbname
    cout<<"User name : "; cin>>data_base_connection_values[1]; // user name
    cout<<"Password : "; cin>>data_base_connection_values[2]; // password
    cout<<"Host address : "; cin>>data_base_connection_values[3]; // host address, ip
    cout<<"Port number : "; cin>>data_base_connection_values[4]; //port
  }




};

Tym razem tak samo jak ostatnio dostaje blad  : aggregate ‘TabelaPostgreSQL test’ has incomplete type and cannot be defined

komentarz 13 lutego 2016 przez notabigthreat Mądrala (7,060 p.)
Klasę daj przed maina.

Podobne pytania

+1 głos
1 odpowiedź 282 wizyt
pytanie zadane 22 października 2018 w Java przez MarcinZielony Użytkownik (710 p.)
0 głosów
1 odpowiedź 320 wizyt
0 głosów
1 odpowiedź 247 wizyt

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!

...