0

VisualStudio2012年11月CTPC++コンパイラを使用してこの構文をコンパイルする際に問題が発生しました...明らかな何かを見逃していないことを確認したかっただけです。

ありがとう!

編集:ヘッダーを削除してさらにシンプルにしました。

class Location
{
public:
    Location();
};

class Shape
{
public:
    Shape();
    Shape(Location location);
};


// Doing this by pointer works ...
// Shape::Shape(Location* location){}
// Shape::Shape() : Shape(new Location()){}

Shape::Shape(Location location)
{
}

Shape::Shape()
    : Shape(Location())
    // error C2143: syntax error: missing ';' before ':'
{
    // int x = 0;
    // (void) x;  // Added these two lines in some cases to get it to compile.
    // These two lines do nothing, but get around a compiler issue.
}
4

1 に答える 1

2
// .h Simplification
class Location
{
public:
  Location() {}
  Location(Location const& other) {}
};

class Shape
{
  Shape();
  Shape(Location location);
};

// How about by value or reference?
Shape::Shape(Location location)
{
}

Shape::Shape(void)
  : Shape(Location()) // error C1001: An internal error has occurred in the compiler.
{
}

int main() {}

上記のコードはgcc4.7.2でコンパイルおよび実行されます

コードをコンパイルするには、コードにいくつか変更を加える必要がありました。物事を単純化するときは、単純化されたコードをコンパイルし続けるようにしてください。 http://sscce.org/

于 2013-01-16T22:14:46.867 に答える