以前にも似たような質問を投稿したことがありますが、コードに若干の誤りがあったため無視されました。もう一度質問させてください。
Gcc では、コンパイル エラーの正確な行が表示されます VS2010/2012 では、コンパイル エラーがどこにあるのかわかりません。誰か助けてもらえますか? ** VS では、それを呼び出した行をどのように知る必要がありましたか?
次のコードがあります。
#include "ObjectHolder.h"
int main()
{
ObjectHolder first(1);
ObjectHolder second(first);
return 0;
}
#ifndef NonCopyableObject_Included
#define NonCopyableObject_Included
class NonCopyableObject
{
public:
virtual ~NonCopyableObject () {}
NonCopyableObject(int i) { m_index = i;}
int m_index;
private:
NonCopyableObject(const NonCopyableObject& other) {}
};
#endif
#ifndef ObjectHolder_Included
#define ObjectHolder_Included
#include "NonCopyableObject.h"
class ObjectHolder
{
public:
virtual ~ObjectHolder ();
ObjectHolder(int i) : obj(i) {}
NonCopyableObject obj;
};
#endif
対エラー:
1>d:\users\user\documents\visual studio 2012\projects\tester\tester\objectholder.h(13):
error C2248: 'NonCopyableObject::NonCopyableObject' : cannot access private member declared in class 'NonCopyableObject'
d:\users\user\documents\visual studio 2012\projects\tester\tester
\noncopyableobject.h(13) : see declaration of 'NonCopyableObject::NonCopyableObject'
d:\users\user\documents\visual studio 2012\projects\tester\tester
\noncopyableobject.h(6) : see declaration of 'NonCopyableObject'
This diagnostic occurred in the compiler generated function
'ObjectHolder::ObjectHolder(const ObjectHolder &)'
GCC:
$ g++ -Wall -Werror --std=c++0x main.cpp -o test_no_copy
In file included from main.cpp:2:0:
NonCopyableObject.h: In copy constructor `ObjectHolder::ObjectHolder(const ObjectHolder&)':
NonCopyableObject.h:13:3: error: `NonCopyableObject::NonCopyableObject(const NonCopyableObject&)' is private
ObjectHolder.h:7:1: error: within this context
main.cpp: In function `int main()':
main.cpp:8:27: note: synthesized method `ObjectHolder::ObjectHolder(const ObjectHolder&)' first required here