-1

有沒有辦法從命令行參數中分配一個類成員,以便該類的所有對象都具有該值(默認情況下)?我希望它是默認的,因爲一個成員函數在Foo類中創建一個新對象,並且我不想讓Var成爲函數參數。如果可能,我想避免全局變量。我希望我的代碼能夠執行下面的代碼,但不使用全局變量。如何從C++中的命令行參數分配成員變量?

了foo.h:

#include <string> 
#include <iostream> 

extern int Var; 

class Foo{ 
    public: 
     int var; 
     Foo(); 

}; 

Foo.cpp中:

#include "Foo.h" 
Foo::Foo(){ 
    var = Var; 
} 

main.cpp中:

#include "Foo.h" 

int Var; // global variable 
using namespace std; 

int main(int argc, char *argv[]){ 
    Var = stoi(argv[1]); 
    Foo foo; 
    cout << foo.var << endl; // should print the command-line argument 

} 
+1

接收值作爲構造函數參數時出現什麼問題:'Foo(int Var):var(Var){}' – NetVipeC 2015-02-10 22:16:20

+2

使用私有類靜態成員和公共類靜態建立函數。 – WhozCraig 2015-02-10 22:16:43

+0

@NetVipeC我編輯了我的OP來澄清。 (我希望它是默認的,因爲成員函數在Foo類中創建了一個新對象,我不想讓Var成爲函數參數。) – asrjarratt 2015-02-10 22:20:11

回答

0

我建議使用std::istringstream

int main(int arg_count, char * * arguments) 
{ 
    std::istringstream arg_stream(arguments[1]); 
    unsigned int value; 
    arg_stream >> value; 
    return 0; 
}