0

「Triangle」という名前のクラスを作成し、メイン セクションから特定のクラス変数 (「SideA」) を読み込もうとしています。特に、SideA はアクセスの問題を防ぐために「パブリック」として宣言しました。ただし、コンパイルしようとすると、プログラムは「クラス Triangle に SideA という名前のメンバーがありません」というエラーをスローします。

私はあなたのために最も重要な部分を貼り付けています:

class Triangle
{
public:
float SideA;
};

int main ()
{
Triangle Object(); //pair is normally filled with several vars for the constructor)

//I declared "Object" correctly, it can be constructed. "SideA" is filled by the 
//constructor. I'm just leaving it out 
//right now to keep this text short

//This line is marked when the IDE aborts the compiling process
cout << Object.SideA;

この問題を解決する方法が本当にわからないので、あなたが私を助けてくれることを願っています. 私が学んでいる本は、これらの目的のために特別な関数を使用することを提案しています (「void readOut {return X}」)。

前もってありがとう、JustATestAcc

4

5 に答える 5

3

更新してみる

Triangle Object();  // This declares a function which returns Triangle type

Triangle Object;    // this defines Object

最も厄介な解析も読む

C++11 の場合Objectリストの初期化で初期化できます

Triangle Object{};    // value-initialization (to zero)
Triangle Object{2.0}; // direct-list-initialization
于 2013-08-21T10:54:36.910 に答える
0

これは、次のように記述するときに Triangle のインスタンスを作成しないためです。

Triangle Object();

これはローカルに ( main() のスコープ内で)Object空の引数リストと戻り値の型を持つ関数を宣言しますTriangle。型のオブジェクトをインスタンス化しTriangleないため、インスタンスの既定のコンストラクターを呼び出しません。ただし、後者は明らかに意図したものです。

次のように書くだけで修正できます。

Triangle Object;
cout << Object.SideA;

さらに、変数名を大文字で始めないことをお勧めします。多くのコーディング規約では、すでに で行ったようにTriangle、型は大文字で始まります。の実際のインスタンスはTriangle、後で型の名前と混同され、型のインスタンスの名前として認識されない可能性があります。名前が使用されているコンテキストから、それが実際に何であるかは明らかになりますが、実際に何を表しているかを見つけるためだけに何かのコンテキストをスキャンする必要は、退屈で不必要です。

Triangle object;
cout << object.SideA;
于 2013-08-21T11:03:46.343 に答える
0
Triangle Object();  // Declare a function Object return a Triangle

これには次の 2 つが考えられます。

  1. クラス Triangle の変数 Object の変数定義
  2. Triangle 型のオブジェクトを返す関数 Object の関数宣言

C++ 標準では、この線を 2 番目の点として解釈する必要があります。

これは、最も厄介な解析と呼ばれます。

次の方法で変更できます。

Triangle Object;

または C++11 の場合:

Tirangle Object{}; // Useful when parameters are needed
于 2013-08-21T11:07:39.393 に答える
0

あなたが行うことができます、トライアングル*オブジェクト=新しいトライアングル(); または、三角形オブジェクト。

于 2013-08-21T11:34:52.417 に答える