Witam :D zauważyłem dzisiaj dziwne zachowanie kompilatora VS2013. Napisałem sobie taki kod:
#include <iostream>
#include <string>
using namespace std;
class TextBuilder
{
public:
virtual void Draw(string Text) = 0;
};
class :public TextBuilder
{
public:
void Draw(string Text) override
{
cout << "Text1: " << Text << endl;
}
} Text1;
class :public TextBuilder
{
public:
void Draw(string Text) override
{
cout << "Text2: " << Text << endl;
}
} Text2;
void ShowString (TextBuilder &Method, string Text)
{
Method.Draw(Text);
}
int main()
{
ShowString(Text1, "Adam");
ShowString(Text2, "Adam");
return 0;
}
Teoretycznie powinien on wyświetlić:
Text1: Adam
Text2: Adam
Ale wyświetla on tylko
Text2: Adam
Text2: Adam
Natomiast gdy zmieniłem kod na:
#include <iostream>
#include <string>
using namespace std;
class TextBuilder
{
public:
virtual void Draw(string Text) = 0;
};
class TextBuilder1 :public TextBuilder
{
public:
void Draw(string Text) override
{
cout << "Text1: " << Text << endl;
}
} Text1;
class TextBuilder2 :public TextBuilder
{
public:
void Draw(string Text) override
{
cout << "Text2: " << Text << endl;
}
} Text2;
void ShowString (TextBuilder &Method, string Text)
{
Method.Draw(Text);
}
int main()
{
ShowString(Text1, "Adam");
ShowString(Text2, "Adam");
return 0;
}
Dostaję poprawny wynik. Czy to jest błąd w kompilatorze?? Czy raczej ja czegoś nie rozumiem??