2013-10-25 21 views
6

Visual Studio 2010'da C++ kodunu kullanarak çalışıyorum. Ne yapmaya çalışıyorum mümkündür ama bu denedim emin değilse, çalıştırma süresinde önişlemci direktifi değerini değiştirmektir ..Çalışma zamanında bir makro değerini değiştirme

somefile.h

static int mValue = 0; 
#define POO = mValue; 
... 

#if POO 0 
//define class methods 
#else 
//define class methods differently 
} 

main.cpp

main() 
{ 

//Code calls constructor and methods allowed when POO is 0 

//Code increments mValue 

//Code calls constructor and methods allowed when POO is 1 


} 

Sınıf nesneleri başka yöntemlerin farklı bir şekilde kullanılmasını sağlamak için POO nasıl değiştirilir? Ya da mümkün değilse, buna başka bir yaklaşım nedir?

+5

Çalışma zamanında önişlemci yönergelerini değiştiremezsiniz. Farklı türetilmiş sınıflara sahip bir taban sınıfının kullanılması, sorununuza bağlı olarak işe yarayabilir (bize gösterdiğiniz şeyden bahsetmek zor). – Yuushi

cevap

8

"Önişlemci" yönergesinin yapısı hakkında kafanız karışmış gibi görünüyor. Bunlar sadece derleyici işlemeden önce var. Derleyici, derleme adımı sırasında makro tanımlarını ortadan kaldırır (değiştirir/işler). Değişecek çalışma zamanında yoklar. Aslında, sadece derleyici tarafından işlenen c/C++ kodunu derleyen bir mini dildir.

Sınıfınızın bir tür çalışma zamanı girdisine göre iki farklı şey olmasını istediğiniz gibi geliyor. Bu tasarım problemini gösterebilir. İki farklı sınıfı tanımlamayı düşünebilirsiniz (muhtemelen ortak önemsiz bir temel sınıf ile).