-4
lovelyなC#を長年使った後、私のC++スキルは苦労しましたが、クラス内のメソッドを参照して値を渡す 作品:このメソッドは別のクラスに移動された場合VC++(エラーC2664)の別のオブジェクトのメソッドへの参照渡し方法
// WORKS
class Foo {
void FooAdd(int i, int j, int &k) {
k = i + j;
}
void FooDo() {
int i = 20;
FooAdd(1, 2, i);
std::string s = std::to_string(i) + " (3: SUCCESS; 20: ERROR)";
std::cout << s;
}
}
int main() {
Foo* foo = new Foo();
foo->FooDo();
return 0;
}
、VC++はもうファイルをコンパイルすることはできません。
// error C2664: "void Bar::BarAdd(int,int,int *)" : Konvertierung von Argument 3 von "int" in "int *" nicht möglich
// error C2664: "void Bar::BarAdd(int,int,int *)" : cannot convert parameter 3 from 'int' to 'int *'
class Bar {
void BarAdd(int i, int j, int &k) {
k = i + j;
}
}
class Foo {
void FooDo() {
int i = 20;
Bar* bar = new Bar();
bar->BardAdd(1, 2, i); // error C2664
std::string s = std::to_string(i) + " (3: SUCCESS; 20: ERROR)";
std::cout << s;
}
}
int main() { // unchanged
Foo* foo = new Foo();
foo->FooDo();
return 0;
}
「BardAdd」が誤植であると仮定しますか?このコードが表示されるエラーを生成することは意味を成さない。 –
クラス宣言が欠落した後に ';' sはかなり確実です。 – Bernard
私は[mcve](https://stackoverflow.com/help/mcve)を作成することをお勧めします。プロセスに賭けると問題が見つかります。 –