warning: overloaded virtual function <> is only partially overridden in class <>


タイトルの上記のエラーは、オーバーロードとオーバーロードを同時に使用する場合に表示される警告情報です.
通常、overridingを使用する場合、親クラスの関数を呼び出さない確率が高い.
(ダイナミックバインド)
ただし、コンパイラでは、継承されたサブクラスに同じ名前の関数(上書き)がある場合、親クラスの関数は非表示になります.使用しない場合はコンパイルエラーは発生しませんが、警告が出力されます.
しかしMSVCのようなコンパイラではnvccを使用していると表示されない場合によく見られますcppファイルで参照されている場合(もちろん)、cuファイルで参照されている場合は、対応する警告が出力されます.
解決策はuseキーワードを使用してオーバーライド関数を宣言することです.
#include<iostream>
class A {
public:
	virtual void process(int x) {
		std::cout << "A1" << std::endl;
	};
	virtual void process(int a, float b) {
		std::cout << "A2" << std::endl;
	}
};

class B : public A {
public:
	using A::process;
	void process(int x) override{
		std::cout << "B1" << std::endl;
	}
};
class C :public B {
public:
	using B::process;
	void process(int a, float b) override {
		std::cout << "C2" << std::endl;
	}
};
int main(int argc, char *argv[]) {
	A* ptr[3];
	ptr[0] = new A;
	ptr[1] = new B;
	ptr[2] = new C;
	for (int i = 0; i < 3; i++) {
		ptr[i]->process(0);
		ptr[i]->process(0, 0);
	}
	return 0;
}