2013-05-17 6 views
11

私はすべてのためのトラブルを抱えているしかし++機能add_node()<string>

Handle<Value> Graph::add_node(const v8::Arguments& args) 
{ 
    HandleScope scope; 

    Graph* graph = ObjectWrap::Unwrap<Graph>(args.This()); 
    graph->add_node(args[0]->ToString()); 

    std::cout << "In add node \n"; 
} 

に文字列を取り込み、その後、私のCにそれを渡すためにメンターされた機能を持っています私の議論のいくつかの並べ替えまたは別のv8のテンプルと私は2つの間で切り替える方法を把握することはできません。 documentationも明記していません。

コンパイラは、私がLocal<v8::String>std::string &を切り替えることができますどのように

../graph/binding.cc:52:10: error: no matching member function for call to 
     'add_node' 
    graph->add_node(args[0]->ToString()); 
    ~~~~~~~^~~~~~~~ 
../graph/directed_graph.h:27:7: note: candidate function not viable: no known 
     conversion from 'Local<v8::String>' to 'std::string &' (aka 
     'basic_string<char> &') for 1st argument; 
     void add_node(std::string & currency); 

私は、このエラーを与えていますか?

答えて

28

は、これがうまく

v8::String::Utf8Value param1(args[0]->ToString()); 
std::string from = std::string(*param1); 

を動作するようだと、あなたはちょうどその

std::string something("hello world"); 
Handle<Value> something_else = String::New(something.c_str()); 
+4

v8のそれ以降のバージョンでは、少し異なるアプローチが必要です。 '' 'String :: NewFromUtf8(isolate、something.c_str())' '' – Richard

1

私は、このボックスにそのV8フレームワークを持っていないが、この

v8::AsciiValue av(args[0]->ToString()); 
std::basic_string<char> str(av); 
graph->add_node(str); 

は、与えられたgraph-> add_nodeコピーSTR、動作するはずです。

+0

'AsciiValue'はもうv8'名前空間'ではありませんが、中に行うstd::stringv8::Stringに変換しようとした場合'v8 :: String :: AsciiValue'。 –

関連する問題