このエラーについて調査しましたが、解決策が見つかりませんでした。仮想関数 compute() を持つ基本クラス Convert と、派生クラス L_To_G (リットルからガロン) があります。私の main.cpp ファイルでは、ステートメント:
p = &L_To_G(数値);
次のエラーが表示されます。
../main.cpp: 関数 'int main()' 内:
../main.cpp:37:20: エラー: 一時アドレスの取得 [-fpermissive] p = &L_To_G(num);
ヘッダー ファイルのコード:
class Convert
{
protected:
double val1, val2; //data members
public:
Convert(double i) //constructor to initialize variable to convert
{
val1 = i;
val2 = 0;
}
double getconv() //accessor for converted value
{
return val2;
}
double getinit() //accessor for the initial value
{
return val1;
}
virtual void compute() = 0; //function to implement in derived classes
virtual ~Convert(){}
};
class L_To_G : public Convert //derived class
{
public:
L_To_G(double i) : Convert(i) {}
void compute() //implementation of virtual function
{
val2 = val1 / 3.7854; //conversion assignment statement
}
};
main.cpp ファイルのコード:
int main()
{
...
switch (c)
{
case 1:
{
p = &L_To_G(num);
p->compute();
cout << num << " liters is " << p->getconv()
<< " gallons " ;
cout << endl;
break;
}
...