來自Java,我學習了某些方法來完成某些適用於C++的事情,但似乎並不完全。在Java中,我可以使用更改靜態成員對象的值
class A {
public static A instance;
public void foo() {
System.out.println("Hello, world!");
}
}
class B {
public static void main(String[] args) {
A.instance = new A();
A.instance.foo();
}
}
但是在C++中,這看起來要麼不可能,要麼在某種程度上有很大的不同。以下是我認爲將實現在C相同的效果++:
class A {
public:
static A instance;
void foo();
};
void A::foo() {
cout << "Hello, world!";
}
int main() {
A::instance();
A::instance.foo();
}
但這產生「錯誤:不對應的呼喚」在A::instance()
。在實際的代碼中,構造函數具有參數,如果這有所影響。我聽說一個靜態成員必須在程序開始時被初始化,但是隻有當我有關於它將存儲的對象的一些信息時才能創建實例。我擁有所有必需的信息後,如何正確設置此值?
實例是一個對象,而不是一個可調用的方法。你是否想要創建一個實例方法:A&instance(){static一個myinstance;返回myinstance;}? –
您正在調用'A :: instance();'作爲函數,但它顯然不是。 –
@AlgirdasPreidžius這是我看到一個對象初始化的唯一方法('obj(3,「hi」);')。我知道這不是一個函數,但我的意願是在該方法中設置它的值。 –