Derleyici Uyarısı (düzey 1) C4930
'prototype': prototip işlevi çağrılmadı (değişken tanımı amaçlandı mı?)
Derleyici kullanılmayan bir işlev prototipi algıladı. Prototip bir değişken bildirimi olarak amaçlandıysa açma/kapatma parantezlerini kaldırın.
Aşağıdaki örnek C4930 oluşturur:
// C4930.cpp
// compile with: /W1
class Lock {
public:
int i;
};
void f() {
Lock theLock(); // C4930
// try the following line instead
// Lock theLock;
}
int main() {
}
C4930, derleyici bir işlev prototip bildirimi ile işlev çağrısı arasında ayrım yapamıyorsa da oluşabilir.
Aşağıdaki örnek C4930 oluşturur:
// C4930b.cpp
// compile with: /EHsc /W1
class BooleanException
{
bool _result;
public:
BooleanException(bool result)
: _result(result)
{
}
bool GetResult() const
{
return _result;
}
};
template<class T = BooleanException>
class IfFailedThrow
{
public:
IfFailedThrow(bool result)
{
if (!result)
{
throw T(result);
}
}
};
class MyClass
{
public:
bool MyFunc()
{
try
{
IfFailedThrow<>(MyMethod()); // C4930
// try one of the following lines instead
// IfFailedThrow<> ift(MyMethod());
// IfFailedThrow<>(this->MyMethod());
// IfFailedThrow<>((*this).MyMethod());
return true;
}
catch (BooleanException e)
{
return e.GetResult();
}
}
private:
bool MyMethod()
{
return true;
}
};
int main()
{
MyClass myClass;
myClass.MyFunc();
}
Yukarıdaki örnekte, sıfır bağımsız değişken alan bir yöntemin sonucu, adlandırılmamış bir yerel sınıf değişkeninin oluşturucusunun bağımsız değişkeni olarak geçirilir. Çağrı, yerel değişkeni adlandırarak veya yöntem çağrısına uygun işaretçi-üye işleciyle birlikte bir nesne örneği ön eki eklenerek kesinleştirilebilir.