Problem z konstruktorem klas

0

Hej

mam do napisania program który na początku wczytuje z pliku pierwszą linijkę pliku tekstowego, jeżeli znajdzie tam 0 to używa konstruktora bez argumentowego, jeżeli 1-konstruktor z jednym argumentem - pomoczniczym łańcuchem znaków (nie jest istotne czym jest ten łańcuch)

Mam coś takiego:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <cstring>

using namespace std;

#pragma warning(disable:4996);

class klasa
{
	int ile_razy()
	{
	}
	
public:
	char pomoc[10];
	klasa(const char *tekst);
	klasa();

	int zestawienie[50];
	char najlepszy[50];

	void czytaj()
	{

	}

	void WyswietlPomoc()
	{
		cout<<pomoc;
	}


};

klasa::klasa(){};
klasa::klasa(const char *tekst)
	{
		strcpy(pomoc,tekst);
	}


int main()
{
	int zadanie;
	char pomoc_tymczasowa[10];
	FILE *stream;
	stream=fopen("C:\\Users\\Wiwo\\Desktop\\dane.txt","r");
	if(stream==NULL)
	{
		cout<<"Blad otwarcia pliku"<<endl;
	}
	else
	{
		fscanf(stream,"%d",&zadanie);
		fscanf(stream,"%s",&pomoc_tymczasowa);
	}
	fclose(stream);
	if(zadanie==1)
	{
		klasa a("tralalala");
	}
	else
	{
		klasa a();
	}

	cout<<"Zadanie wynosi: "<<zadanie<<endl;
	cout<<pomoc_tymczasowa<<endl<<endl;
	
	cout<<endl<<endl<<endl<<endl;
	cout<<pomoc_tymczasowa<<endl;
	cout<<a.pomoc<<endl<<endl; //visual studio podkresla a i mówi "identifier "a" is undefinied, wszystkie błędy dotyczą tej linijki

	system("pause");
	return 0;
}

I takie błędy:

Error	2	error C2065: 'a' : undeclared identifier	c:\users\wiwo\documents\visual studio 2012\projects\klasy1\klasy1\main.cpp	74	1	klasy1
Error	3	error C2228: left of '.pomoc' must have class/struct/union	c:\users\wiwo\documents\visual studio 2012\projects\klasy1\klasy1\main.cpp	74	1	klasy1
	4	IntelliSense: identifier "a" is undefined	c:\Users\Wiwo\Documents\Visual Studio 2012\Projects\klasy1\klasy1\main.cpp	74	8	klasy1

plik dane wygląda tak:

1
abca
abcabcade
nsabcatdftabca
abccabc
abcaabcaewrxrabcayyabc

czyli zmienna zadanie otrzymuje 1 i element klasy powinien powstać przez użycie konstruktora z paramtetrem który wpiszę się do zmiennej a.pomoc

Mógł by mi ktoś powiedzieć jak rozwiązać taki problem? nie mam zielonego pojęcia, przecież skoro jest if i else to na pewno element klasy powstanie, to dlaczego VS uważa że jest niezdefiniowany?
będę bardzo wdzięczny za pomoc ;)

0
        if(zadanie==1)
        {
                klasa a("tralalala");
        }
        else
        {
                klasa a();
        }

zamien na:

string tmp="";
if(zadanie==1) tmp="tralalalal";
klasa a(tmp.c_str());
0

takie coś jak najbardziej działa, tylko że nie jest zgodne z poleceniem w zadaniu bo za każdym razem (nieważne czy zadanie to 1 czy 0) program wykorzysta konstruktor z argumentem, kiedy jest zero wykorzysta z argumentem który będzie pusty ale nadal to będzie dokładnie ten konstruktor a nie drugi.

Jak to zrobić żeby w zależności od zmiennej zadanie (żądanie) wybierany był odpowiedni konstruktor?

0

Wskaznik i new

0
klasa* a;
if(zadanie==1) a = new klasa();
else a = new klasa("lolo");

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